欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、容器適配器

容器適配器其實是一種設計模式。轉(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++實現(xiàn)打印兩個有序鏈表公共部分的方法

    C++實現(xiàn)打印兩個有序鏈表公共部分的方法

    這篇文章主要介紹了C++實現(xiàn)打印兩個有序鏈表公共部分的方法,涉及C++針對有序鏈表的簡單遍歷、比較相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • 基于C++實現(xiàn)擲雙骰游戲的示例代碼

    基于C++實現(xiàn)擲雙骰游戲的示例代碼

    在最流行的博彩游戲中有一種名為“擲雙骰”(craps)的骰子游戲,這種游戲在世界各地的娛樂場所和大街小巷非常受歡迎。本文將用C++語言實現(xiàn)這一游戲,需要的可以參考一下
    2022-03-03
  • 解析C/C++指針、函數(shù)、結(jié)構(gòu)體、共用體

    解析C/C++指針、函數(shù)、結(jié)構(gòu)體、共用體

    這篇文章主要介紹了C/C++指針、函數(shù)、結(jié)構(gòu)體、共用體的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • C++實現(xiàn)教職工管理系統(tǒng)課程設計

    C++實現(xiàn)教職工管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C++實現(xiàn)教職工管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++實現(xiàn)LeetCode(14.最長共同前綴)

    C++實現(xiàn)LeetCode(14.最長共同前綴)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(14.最長共同前綴),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)自頂向下的歸并排序算法

    C++實現(xiàn)自頂向下的歸并排序算法

    這篇文章主要介紹了C++實現(xiàn)自頂向下的歸并排序算法,結(jié)合實例詳細分析了自頂向下的歸并排序算法的原理與具體實現(xiàn)步驟,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-12-12
  • C/C++可變參數(shù)的使用

    C/C++可變參數(shù)的使用

    可變參數(shù)的使用方法遠遠不止以下幾種,不過在C,C++中使用可變參數(shù)時要小心,在使用printf()等函數(shù)時傳入的參數(shù)個數(shù)一定不能比前面的格式化字符串中的’%’符號個數(shù)少,否則會產(chǎn)生訪問越界,運氣不好的話還會導致程序崩潰
    2013-09-09
  • C語言函數(shù)的遞歸調(diào)用詳情

    C語言函數(shù)的遞歸調(diào)用詳情

    這篇文章主要介紹了C語言函數(shù)的遞歸調(diào)用詳情,遞歸做為一種算法在程序設計語言中廣泛應用,主要的思考方式就是大事化小,下文具體的相關(guān)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • C++實現(xiàn)LeetCode(123.買股票的最佳時間之三)

    C++實現(xiàn)LeetCode(123.買股票的最佳時間之三)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(123.買股票的最佳時間之三),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 利用c++和easyx圖形庫做一個低配版掃雷游戲

    利用c++和easyx圖形庫做一個低配版掃雷游戲

    這篇文章主要介紹了用c++和easyx圖形庫做一個低配版掃雷游戲,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01

最新評論