程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++11 新特性之 tuple

C++11 新特性之 tuple

編輯:C++入門知識

我們在C++中都用過pair.pair是一種模板類型,其中包含兩個數據值,兩個數據的類型可以不同.pair可以使用make_pair構造

pair p = make_pair(1, "a1");

如果傳入的參數為多個,那麼就需要嵌套pair,如下代碼


#include 
#include 
using namespace std;

int main()
{	
	// ,注意:在嵌套模板實參列表中應當使用‘> >’而非‘>>’
	map > > m; 
	
	map temp1;
	temp1.insert(make_pair("b1", "c1"));
	
	map > temp2;
	temp2.insert(make_pair("a1", temp1));
	
	m.insert(make_pair(1, temp2));
	
	map temp3;
	temp3.insert(make_pair("b2", "c2"));
	
	map > temp4;
	temp4.insert(make_pair("a2", temp3));
	
	m.insert(make_pair(2, temp4));
	
	//遍歷
	map > >::const_iterator itr1;
	map >::const_iterator itr2;
	map::const_iterator itr3;
	
	for (itr1=m.begin(); itr1!=m.end(); itr1++)
	{
		cout << itr1->first << " ";
		itr2 = (itr1->second).begin();
	    cout << itr2->first << " ";
	    itr3 = (itr2->second).begin();
	    cout << itr3->first << " ";
	    cout << itr3->second << endl;
	}
	
	pair p = make_pair(1, "a1");
	
	return 0;
}

上面的做法明顯很麻煩,在C++11中引入了變長參數模板,所以發明了新的數據類型:tuple,tuple是一個N元組,可以傳入1個, 2個甚至多個不同類型的數據,避免了嵌套pair的丑陋做法,通過make_tuple()創建元組,通過get<>()來訪問元組的元素

#include 
#include 
#include 
using namespace std;

int main()
{	
	auto t1 = make_tuple(1, "a1", "b1", "c1");
	cout << get<0>(t1) << " ";
	cout << get<1>(t1) << " ";
	cout << get<2>(t1) << " ";
	cout << get<3>(t1) << " ";
	cout << endl;
	
	vector > tv;
	tv.push_back(make_tuple(1, "a1", "b1", "c1"));
	tv.push_back(make_tuple(2, "a2", "b2", "c2"));
	
	vector >::iterator itr;
	for (itr=tv.begin(); itr!=tv.end(); itr++)
	{
		cout << get<0>(*itr) << " ";
		cout << get<1>(*itr) << " ";
		cout << get<2>(*itr) << " ";
		cout << get<3>(*itr) << endl;
	}
	
	return 0;
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved