C++ map.insert: pair和make_pair区别

 1 C++ map.insert: pair和make_pair区别
 2 \********************************* 3     map<uint32_t, string> temp;
 4     1. temp[1] = "template";
 5     2.temp.insert(pair<uint32_t, string>(1, "template"));
 6     3.temp.insert(make_pair(1, "template"));
 7
 8     pair实质上是一个结构体,其主要的两个成员变量是first和second,因此有了     for(const auto& i : temp) {
 9         cout << "first = " << i.first;            // i 也就是一个pair;
10         cout << "second = " << i.second;
11     }
12     pair需要指定构造的类型,make_pair可以隐式转换,即将1 转成uint32_t, template转成string类型。
13 \*********************************\

原文地址:https://www.cnblogs.com/kilen/p/9242581.html

时间: 2024-08-30 03:41:06

C++ map.insert: pair和make_pair区别的相关文章

STL map详细用法和make_pair函数

今天练习华为上机测试题,遇到了map的用法,看来博客http://blog.csdn.net/sprintfwater/article/details/8765034:感觉很详细,博主的其他内容也值得学习:后面附上今天的练习题目. 首先make_pair Pairs C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象 class pair可以将两个值视为一个单元.容器类别map和multimap就是使用pairs来管理其健值/实值(key/va lue)的成对元素. pai

C++ map.insert 传参类型不同,构造/析构次数不同

1. 传参方式 使用 insert 为 map 插值时,insert 的传参包含以下几种可能: make_pair 生成对象 pair(key_type, value_type) 生成对象 pair(const key_type, value_type) 生成对象 map<key_type, value_type>::value_type 生成对象 不同的传参,导致不同次数的构造 / 析构函数调用. 2. 测试代码与结果 /* 在 map 中不同的 insert 传参类型,导致的不同次数的构造

set和map和pair 转自ACdreamers

set与map容器 分类:             C/C++              2013-08-25 19:21     560人阅读     评论(0)     收藏     举报 首先来看看set集合容器: set集合容器实现了红黑树的平衡二叉树数据结构,在插入元素时它会自动调整二叉树的排列,把该元素放到适当的位置,并且保证左右子树平衡.平衡二叉检索树采用中序遍历算法. 对于set,vector,map等等,它们的前向迭代器定义是这样的(以set为例): set<int>::it

(转)《Effective STL》条款24:当关乎效率时应该在map::operator[]和map::insert之间仔细选择

如果你要更新已存在的map元素,operator[]更好,但如果你要增加一个新元素,insert则有优势. 更有效率的”添加或更新“函数(书中的函数我抠了出来~ ) template<typename MapType, typename KeyArgType, typename ValueArgType>typename MapType::iterator EfficientAddOrUpdate(MapType& m, const KeyArgType& k, const V

map insert segment abort fault

_hashMap.insert(pair<String, HASH_TABLE*>(tmp, hashtabletmp)); 这句会报segment或abort错误 经同事帮看,也翻来覆去自查,终于发现原来是malloc中 hTable->hList = (pHASH_ENTRY)malloc(hTable->listLen * (HASH_ENTRY_SIZE));    这句写成了 hTable->hList = (pHASH_ENTRY)malloc(hTable-&g

java中Map,List与Set的区别

java中Map,List与Set的区别 目录(?)[+] Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. 简单说下集合和数组的区别:(参考文章:

Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,Linke

Lua table pair和ipair区别

官方描述: ipairs (t) Returns three values: an iterator function, the table t, and 0, so that the construction for i,v in ipairs(t) do body end will iterate over the pairs (1,t[1]), (2,t[2]), ···, up to the first integer key absent from the table. pairs (

map和pair配合使用,一个空格引发的血案

在map中可以嵌入pair使用,从而扩展map的灵活性, #include<map> using namespace std; map<CString, pair<CString, CString> > m_map; 注意红色部分的“空格”,不能缺少,否则会导致编译错误!!!