STL的pair学习

http://blog.csdn.net/calvin_zcx/article/details/6072286

http://www.linuxidc.com/Linux/2014-10/107621.htm

头文件  : <utility>

pair 的  <、>、<=、>=、==、!= 的比较规则  :  先比较first,first相等时再比较second   (可以通过重载这几个运算符来重新指定自己的比较逻辑)

pair的初始化:   pair<string, int> prt;        pair<string, int>pr2("hello", 5);   pair<string, int> pr3 = make_pair<string, int>("haha", 4);    pair<stirng, int>pr4 = make_pair("lll",3);

pair和vector交互:  pair<string, vector<int>> student;

pair访问元素:   pair<int, int> a(1,2);

cout<<"first="<<a.first<<"------"<<"second="<<a.second;

pair使用typedef技巧:   typedef pair<string, int>   nameInfo;

nameInfo info("lucy", 4);

pair与标准输入流:   pair<string, string> input;

while(cin>>input.first>>input.second){ cout<<"info is"<<input.first<<":"<<input.second<<endl;}

          (ps : 直接使用cin的小技巧  abc[enter]d---->info is abc:d)

pair的隐式转换:      pair可以接受隐式的类型转换,这样可以获得更高的灵活度。但是这样会出现如下问题:例如有如下两个定义:

          pair<int, float>(1, 1.1);
          make_pair(1, 1.1);                 make_pair函数会将second变量都转换成double类型.这个问题在编程是需要引起注意。

          make_pair<int, float>(1,1.1);   如果想指定是float的可以像这样指明类型.

vector套用pair的一个小例子:

时间: 2024-10-03 21:41:37

STL的pair学习的相关文章

[C++]STL萃取学习

STL萃取学习 一,萃取模板类实现 iterator类:模板常用属性的集合类,其他类只需要集成该类即可.本例为学习就只包括value_type属性. iterator_traits类:属性萃取类. /********************************* * * Author : szyu * * Date : 2017.3.1 * **************************************/ #ifndef __SZYU_ITERATOR__ #define __

STL标准容器类学习笔记之(Vector/Deque/List)

STL标准容器类简介 1.顺序性容器 vector相当与数组,从后面快速的插入与删除,直接访问任何元素 deque双队列,从前面或后面快速的插入与删除,直接访问任何元素 list双链表,从任何地方快速插入与删除 2.关联容器 set快速查找,不允许重复值 multiset快速查找,允许重复值 map一对一映射,基于关键字快速查找,不允许重复值 multimap一对多映射,基于关键字快速查找,允许重复值 3.容器适配器 stack后进先出 queue先进先出 priority_queue最高优先级

【STL源码学习】STL算法学习之三

第一章:前言 数量不多,用到的时候会很爽. 第二章:明细 STL算法中的又一个分类:分割:将已有元素按照既定规则分割成两部分.  is_partitioned 函数原型: template <class InputIterator, class UnaryPredicate> bool is_partitioned (InputIterator first, InputIterator last, UnaryPredicate pred); 函数作用: 如果序列被分为两部分,前一部分pred都

【STL源码学习】STL算法学习之一

第一章:引子 STL包含的算法头文件有三个:<algorithm><numeric><functional>,其中最大最常用的是<algorithm>,今天学习的是<algorithm>包含的算法中的第一部分:非修改顺序操作算法. 接下来学习的算法基于C++11标准,较老的IDE会支持不全面或者部分算法不支持. 第二章:原型解析 如分类名称体现的信息,本节的所有函数都不会修改序列,并且原理上都是顺序遍历迭代器实现的. all_of 函数原型: t

C++ STL容器的学习使用(vector、queue、list、set、map)

 1.STL组成: STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(containeradaptor),函数对象(functor),除此之外还有STL其他标准组件.通俗的讲: 容器:装东西的东西,装水的杯子,装咸水的大海,装人的教室--STL里的容器是可容纳一些数据的模板类. 算法:就是往杯子里倒水,往大海里排污,从教室里撵人--STL里的算法,就是处理容器里面数据的方法.操作. 迭代器:往杯子里倒水的水壶,排污的管道,

C++ STL源码学习(之hash_table篇)

stl_hash_table.h 这不属于C++标准,是SGI STL标准的一部分,用于辅助实现hash_map和hash_set /// Hashtable class, used to implement the hashed associative containers /// hash_set, hash_map, hash_multiset, and hash_multimap. ///STL HashTable采用的是所谓的开链哈希法,依靠一个类似vector<list<T>

C++ STL源码学习(之RB Tree篇)

stl_tree.h 这是整个STL中最复杂的数据结构,也是我接触到的最复杂的数据结构之一 /** Red-black tree class, designed for use in implementing STL associative containers (set, multiset, map, and multimap). The insertion and deletion algorithms are based on those in Cormen, Leiserson, and

C++ STL源码学习之算法篇

///由于篇幅太长,因此,删去了很多接口,只分析了内部实现,算法对迭代器的要求也被删去 /// search. template <class _ForwardIter1, class _ForwardIter2> _ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2) { /// Test for empty range

【STL源码学习】STL算法学习之二

第一章:前言 学习笔记,记录学习STL算法的一些个人所得,在以后想用的时候可以快速拾起. 第二章:明细 copy 函数原型: template <class InputIterator, class OutputIterator> OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result); 函数作用: 将[first,last)区间的元素拷贝至result开头的迭代器区间,并返回赋值