首页 > 代码库 > c++11 stl 学习之 pair
c++11 stl 学习之 pair
pair以模板的方式存储两个数据
namespace std {
template <typename T1, typename T2>
struct pair {
// member
T1 first;
T2 second;
...
};
}
p.first
p.second
get<0>(p) C++11
get<1>(p) C++11
示例 PairPrintTest()
//=======================================
pair接受多个参数
示例 PairTuple()
//========================================
make_pair 中使用ref() 代替参数的引用&
示例 PairRefTest
//=============================================
tie 的用法
示例 TieTest
//=====================================
#include <tuple>#include <iostream>#include <utility>#include <tuple>#include <complex>#include <string>using namespace std;template<typename T1,typename T2>ostream& operator << (ostream& strm, const pair<T1, T2>&p){ return strm << "[" << p.first << "," << p.second << "]";}void PairPrintTest(){ typedef std::pair<int, float> IntFloatPair; IntFloatPair p(42, 3.14f); cout << get<0>(p) << " "<< get<1>(p) << endl; cout << p << endl;}//==============================class Foo {public: Foo(tuple<int, float>) { cout << "Foo::Foo(tuple)" << endl; } template <typename... Args> Foo(Args... args) { cout << "Foo::Foo(args...)" << endl; }};void PairTupleTest(){ tuple<int, float> t(1, 2.22f); // pass the tuple as a whole to the constructor ofFoo: pair<int, Foo> p1(42, t); // pass the elements ofthe tuple to the constructor ofFoo: pair<int, Foo> p2(piecewise_construct, make_tuple(42), t);}void PairRefTest(){ int i = 0; auto p = make_pair(&i, &i); ++p.first; ++p.second; cout << "When use ‘&‘ i: " << i << endl; auto p1 = make_pair(ref(i), ref(i)); ++p1.first; ++p1.second; cout << "When use ‘ref()‘ i: " << i << endl;}void TieTest(){ pair<char, char> p = make_pair(‘x‘, ‘y‘); //pair oftwo chars char c; tie(ignore, c) = p; //extract second value into c (ignore first one) cout << c << endl; tie(c, ignore) = p; cout << c << endl;}void TurpleTest(){ int n = 998; auto tt = std::tuple_cat(std::make_tuple(42, 7.7, "hello"), std::tie(n));}int _tmain(int argc, _TCHAR* argv[]){ PairPrintTest(); PairTupleTest(); PairRefTest(); TieTest(); TurpleTest(); return 0;}
c++11 stl 学习之 pair
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。