C++标准库--Pair

头文件:<utility>

可访问属性:

first 第一个值
second 第二个值

可访问方法:

swap(pair) 和另外一个pair交换值

其他相关方法:

make_pair(val1, val2) 接受两个参数,返回一个pair
swap(pair1, pair2) 交换两个pair的值
get<?>(pair) 获取pair的属性

例子:

  例子1--构造pair:

    pair<int, string> p1; //直接使用T1和T2类型的default constructor
    pair<int, string> p2(11, "abc");  
    pair<string, int> p3(
                        piecewise_construct,
                        forward_as_tuple("test"),
                        forward_as_tuple(3)
                        );
    pair<int, string> p5(p2);
    pair<int, string> p6 = make_pair(6, "f");
    pair<int, string> p7 = p6;    

  例子2--访问属性:

   pair<int, string> p(11, "abc");
    cout << "第一种访问模式:" << p.first << " : " << p.second << endl;
    cout << "第二种访问模式:" << get<0>(p) << " : " << get<1>(p) << endl;

  

  例子3--关系比较:

    pair<int, string> p1(1, "a");
    pair<int, string> p2(1, "b");

    //等价于 p1.first == p2.first && p1.second == p2.second
    if (p1 == p2)
        cout << "p1 == p2" << endl;

    if (p1 != p2)
        cout << "p1 != p2" << endl;

    //先比较first,相等再比较second
    if (p1 > p2)
        cout << "p1 > p2" << endl;

    if (p1 >= p2)
        cout << "p1 >= p2" << endl;

    if (p1 < p2)
        cout << "p1 < p2" << endl;

    if (p1 <= p2)
        cout << "p1 <= p2" << endl;

  例子4--交换值:

    pair<int, string> p1(12, "abc");
    pair<int, string> p2(34, "xyz");
    //第一种交换方法
    p1.swap(p2);
    //第二种交换方法
    swap(p1, p2);
时间: 2024-11-03 21:56:23

C++标准库--Pair的相关文章

C++标准库和标准模板库

C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再花费时间.人力重新开发呢: (2)质量:标准库的都是经过严格测试的,正确性有保证: (3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平: (4)良好的编程风格:采用行业中普遍的做法进行开发. 一.C++标准库 C++标准库的内容分为10类, 分别是:C1.语

STL标准库-容器-set与multiset

摘要: 技术在于交流.沟通,转载请注明出处并保持作品的完整性. set与multiset关联容器 结构如下 set是一种关联容器,key即value,value即key.它是自动排序,排序特点依据key set的key不能相同.multiset的key相同.关联容器的查找效率要高于顺序容器很多很多. set和multiset不提供用来直接存取元素的任何操作函数,取值需要通过迭代器 一 定义 1.set/mulitiset以红黑树为底层结构,因此有元素自动排序的特性,排序是根据key,而set.m

C++拾遗(二)——初窥标准库类型

本篇博文的开始,先介绍一道书上看到的智力题:有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸.有一台称重精准的天平,只是用一次天平的情况下如何找出比较重的那瓶药丸? 好了,直接公布答案.从药瓶#1取出一粒药丸,从药瓶#2取出两粒,从药瓶#3取出三粒,依此类推.如果每粒药丸均重1克,则称得总重量为210克(1 + 2 + … + 20 = 20 * 21 / 2 = 210),“多出来的”重量必定来自每粒多0.1克的药丸.药瓶的编号可由算式(weight - 210 gr

STL笔记(6)标准库:标准库中的排序算法

STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew Austern http://www.cuj.com/experts/1908/austern.htm?topic=experts 用泛型算法进行排序    C++标准24章有一个小节叫“Sorting and related operations”.它包含了很多对已序区间进行的操作,和三个排序用泛型

第17章 标准库特殊设施

17.1类型tuple tuple是类是pair的模板.每个pair都不相同,但是都有两个成员.而一个tuple类型会有任意数量的成员.(定义在tuple头文件中) tuple<T1,T2,...,Tn> t; t是一个tuple,成员数位n,第i个成员的类型为Ti.所有成员都进行值初始化 tuple<T1,T2,...,Tn> t(v1,v2,...,vn); t是一个tuple,成员类型为T1,T2,...,Tn,每个成员用对应的初始值vi进行初始化.此构造函数是explici

C++ 标准库概览(一分钟就看完了)

C++ 标准库以若干头文件的方式提供. 下面简单介绍一个各头文件的内容. 第一部分 容器 Containers <array> C++11 新增.提供了容器类模板 std::array,固定大小数组的容器. <bitset> 提供了专门用来存放位组(一系列 bit)的容器类 std::bitset. <deque> 提供了双向队列容器类模板 std::deque. <forward_list> C++11 新增.提供了单向链表容器类模板 std::forwa

《C++ Primer》第II部分:C++标准库

<C++ Primer>第II部分:C++标准库 前言 把<C++ Primer>读薄系列笔记.本篇为第II部分C++标准库,包含全书第8-12章重难点: IO库 顺序容器 范型算法 关联容器 动态内存 修订版课后题解见GitHub仓库cpp-primer-workbook. IO库 IO类继承机制:ifstream和istringstream继承自istream,ofstream和ostringstream都继承自ostream 宽字符IO类:在函数和类型前加前缀w,如wcin.

Boost程序库完全开发指南——深入C++“准”标准库(第3版)

内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Boost 社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理.正则表达式.容器与数据结构.并发编程.函数式编程.泛型编程.设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简捷.优雅.灵活和高效. <Boost程序库完全开发指南——深入C++“准”标准库(

c++标准库和stl

C++中有三大重要的标准库,为string.vector.bitset,他们每个都是一个类,对应的命名空间均为std.string类的对象可以存 储一个字符串,相应于C中存储字符串的方式,C++的优点是,在创建对象时可以不指定长度,在连接和删除中,只需要使用进行算符重载后了的“+”和 “-”.vector类的对象可以存储一个数组,可以int,char,string等,使用时,就像一个栈一样,通过push_back. pop_back等进行操作,这是与一般数组不一样的地方. String 类 1