最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入探究C++中的容器適配器與仿函數(shù)技術(shù)

 更新時間:2023年04月23日 09:06:47   作者:命由己造~  
C++中的容器適配器和仿函數(shù)是實現(xiàn)數(shù)據(jù)結(jié)構(gòu)與算法的重要技術(shù),容器適配器可以將一個容器轉(zhuǎn)換為另一個形式,仿函數(shù)則可以自定義數(shù)據(jù)類型的比較、排序、計算等行為,提高程序的靈活性和可重用性

一、容器適配器

容器適配器其實是一種設(shè)計模式。轉(zhuǎn)換出我們想要的東西。

比方說我們實現(xiàn)棧的時候既可以用數(shù)組,也可以用鏈表,此時我們就可以用到容器適配器了。

namespace yyh
{
	template <class T, class container = vector<T>>
	class stack
	{
	public:
		void push(const T& x)
		{
			_con.push_back(x);
		}
		void pop()
		{
			_con.pop_back();
		}
		const T& top()
		{
			return _con.back();
		}
		bool empty()
		{
			return _con.empty();
		}
	private:
		container _con;
	};
}
int main()
{
	yyh::stack<int, vector<int>> st1;
	yyh::stack<int, list<int>> st2;
	return 0;
}

這樣我們就可以用不同的底層實現(xiàn)棧了。

二、仿函數(shù)

仿函數(shù)其實就是用類重載()的方式來模擬一個函數(shù)。

我們現(xiàn)在寫一個比較大小的仿函數(shù)

namespace yyh
{
	template <class T>
	struct less
	{
		bool operator()(const T& x, const T& y)
		{
			return x < y;
		}
	};
	template <class T>
	struct greater
	{
		bool operator()(const T& x, const T& y)
		{
			return x > y;
		}
	};
}

這個類我們就可以成為仿函數(shù),而該類的對象成為函數(shù)對象。

用法:

當我們想同時派升序和降序的時候,我們可以利用仿函數(shù)來進行比較。

namespace yyh
{
	template <class T>
	struct less
	{
		bool operator()(const T& x, const T& y)
		{
			return x < y;
		}
	};
	template <class T>
	struct greater
	{
		bool operator()(const T& x, const T& y)
		{
			return x > y;
		}
	};
	template <class T, class compare>
	void BubbleSort(vector<T>& a, compare com)
	{
		for (int i = 0; i < a.size() - 1; i++)
		{
			//用來判斷是否交換過,提高效率
			int flag = 1;
			for (int cur = 0; cur < a.size() - 1 - i; cur++)
			{
				if (com(a[cur + 1], a[cur]))
				{
					swap(a[cur], a[cur + 1]);
					flag = 0;
				}
			}
			if (flag)
			{
				break;
			}
		}
	}
}
int main()
{
	yyh::less<int> lessFun;
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(5);
	v1.push_back(2);
	v1.push_back(4);
	v1.push_back(3);
	yyh::BubbleSort(v1, lessFun);
	for (auto e : v1)
	{
		cout << e << " ";
	}
	return 0;
}

到此這篇關(guān)于深入探究C++中的容器適配器與仿函數(shù)技術(shù)的文章就介紹到這了,更多相關(guān)C++容器適配器與仿函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++設(shè)計模式之簡單工廠模式實例

    C++設(shè)計模式之簡單工廠模式實例

    這篇文章主要介紹了C++設(shè)計模式之簡單工廠模式實例,工廠模式有一種非常形象的描述,建立對象的類就如一個工廠,而需要被建立的對象就是一個個產(chǎn)品,需要的朋友可以參考下
    2014-09-09
  • 淺談返回函數(shù)內(nèi)部new分配的內(nèi)存的引用

    淺談返回函數(shù)內(nèi)部new分配的內(nèi)存的引用

    下面小編就為大家?guī)硪黄獪\談返回函數(shù)內(nèi)部new分配的內(nèi)存的引用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++ lambda 捕獲模式與右值引用的使用

    C++ lambda 捕獲模式與右值引用的使用

    這篇文章主要介紹了C++ lambda 捕獲模式與右值引用的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-03-03
  • C++計算ICMP頭的校驗和實例

    C++計算ICMP頭的校驗和實例

    這篇文章主要介紹了C++計算ICMP頭的校驗和的方法,代碼簡單實用,對于校驗ICMP報文來說有不錯的實用價值,需要的朋友可以參考下
    2014-10-10
  • C++中產(chǎn)生臨時對象的情況及其解決方案

    C++中產(chǎn)生臨時對象的情況及其解決方案

    這篇文章主要介紹了C++中產(chǎn)生臨時對象的情況及其解決方案,以值傳遞的方式給函數(shù)傳參,類型轉(zhuǎn)換以及函數(shù)需要返回對象時,并給對應(yīng)給出了詳細的解決方案,通過圖文結(jié)合的方式講解的非常詳細,需要的朋友可以參考下
    2024-05-05
  • Qt實現(xiàn)文本編輯器(二)

    Qt實現(xiàn)文本編輯器(二)

    這篇文章主要介紹了利用Qt實現(xiàn)的一個文本編輯器。本文將具體講解下是如何實現(xiàn)菜單欄以及工具欄上對應(yīng)的需求,感興趣的可以動手試一試
    2022-01-01
  • C語言實現(xiàn)信號槽的項目實踐

    C語言實現(xiàn)信號槽的項目實踐

    信號槽是觀察者模式的一種實現(xiàn),一個信號就是一個能夠被觀察的事件,本文主要介紹了C語言實現(xiàn)信號槽的項目實踐模具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • c++實現(xiàn)合并文件以及拆分實例代碼

    c++實現(xiàn)合并文件以及拆分實例代碼

    這篇文章主要介紹了c++實現(xiàn)合并文件以及拆分實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 基于Qt和Opencv實現(xiàn)二維碼解析

    基于Qt和Opencv實現(xiàn)二維碼解析

    這篇文章主要為大家詳細介紹了如何利用?Qt?和?OpenCV?實現(xiàn)一個可從視頻和圖片中檢測二維碼的軟件,感興趣的小伙伴可以跟隨小編一起學(xué)習一下
    2024-11-11
  • C++?11新特性之右值引用使用案例與應(yīng)用場景

    C++?11新特性之右值引用使用案例與應(yīng)用場景

    右值引用和move語義是C++ 11中重要的特性之一,可以提高程序的效率和性能,右值引用是一種新的引用類型,下面這篇文章主要給大家介紹了關(guān)于C++?11新特性之右值引用使用案例與應(yīng)用場景的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評論

贵德县| 永顺县| 商城县| 广灵县| 明光市| 新乡市| 界首市| 张家界市| 通海县| 彰化县| 湘阴县| 海城市| 凤庆县| 崇仁县| 溧水县| 斗六市| 上栗县| 和田市| 启东市| 屏山县| 呼图壁县| 通榆县| 齐河县| 中江县| 松潘县| 银川市| 塔城市| 林周县| 昌宁县| 偃师市| 盘锦市| 丰原市| 当阳市| 门源| 兴安县| 武城县| 丹巴县| 图木舒克市| 石泉县| 奇台县| 东山县|