pair vs make_pair |
02 | make_pair constructs a pair object. |
03 | template < class T1, class T2> |
04 | pair<T1, T2> make_pair(T1 x, T2 y) |
05 | { |
06 | return pair<T1, T2>(x, y); |
07 | } |
08 | |
09 | eg: std::pair<std::string, double >( "sn001" , 12.5); |
10 | std::make_pair( "sn001" , 12.5); |
11 | 两者效果一样。 |
12 | 倘若:std::pair<std::string, float >( "sn002" , 12.6); // 12.6's datatype is float |
13 | std::make_pair( "sn002" ,12.6); // 12.6's datatype is double |
14 | 使用: |
15 | std::pair<std::string, double > m_pairA; |
16 | m_pairA = std::make_pair( "sn001" , 12.5); |
17 | std::cout<<m_pairA.first<< " " <<m_pairA.second<<std::endl; |
18 | 结合map的简单使用: |
19 | std::pair<std::string, double > m_pairA; |
20 | m_pairA = std::make_pair( "sn001" , 12.5); |
21 | //std::cout<<m_pairA.first<<" "<<m_pairA.second<<std::endl; |
22 | std::map<std::string, double > m_mapA; |
23 | m_mapA.insert(m_pairA); |
24 | std::map<std::string, double >::iterator iter = m_mapA.begin(); |
25 | std::cout<<iter->first<< " " <<iter->second<<std::endl; |
26 | 小结: |
27 | make_pair创建的是一个pair对象。使用都很方便,针对成对出现的数据,如书的ISBN对应一个书名。 |
28 | pair是单个数据对的操作,pair是一 struct 类型,有两个成员变量,通过first,second来访问,用的是“.”访问。 |
29 | map是一个关联容器,里面存放的是键值对,容器中每一元素都是pair类型,通过map的insert()方法来插入元素(pair类型)。 |