原创 2015年07月10日 14:37:59

map: associative containers, key-value.
the keys are generally used to sort and uniquely identify the elements, while the mapped values are content associated to this key.

my_map.insert(it, val) //it:iterator, val:pair value
another_map.insert(my_map.begin(), my_map.end())
if a single element is inserted, logarithmic in size in general, but amortized constant if a hint is given and the position given is the optimal.
C++11: if N elements are inserted, Nlog(size+N).

 map<int, string> my_map;
    my_map.insert(my_map.begin(), pair<int, string>(3,"apple"));
    my_map.insert(my_map.begin(), pair<int, string>(2,"pear"));
    my_map.insert(my_map.begin(), pair<int, string>(1,"orange"));
    cout<<"my_map contains:"<<endl;
    for(auto i:my_map){   //i是pair
        cout<<i.first<<"  "<<i.second<<endl;
    cout<<"another_map contains:"<<endl;
    map<int, string> another_map;
    another_map.insert(my_map.begin(), my_map.end());
    for(map<int, string>::iterator it = another_map.begin(); it != another_map.end(); it++)

(a) erasing by iterator: my_map.erase( it )
(b) erasing by key: my_map.erase( key )
(c) erasing by range: my_map.erase( it1, it2 )
(a) For the first version (erase(position)), amortized constant.
(b) For the second version (erase(val)), logarithmic in container size.
(c) For the last version (erase(first,last)), linear in the distance between first and last.
什么是amortied constant?:
Essentially amortised time means “average time taken per operation, if you do many operations”.
动态序列插入例子:dynamic array
repeatedly add new items. Normally adding an item takes constant time (that is, O(1)). But each time the array is full, you allocate twice as much space, copy your data into the new region, and free the old space. Assuming allocates and frees run in constant time, this enlargement process takes O(n) time where n is the current size of the array.

So each time you enlarge, you take about twice as much time as the last enlarge. But you’ve also waited twice as long before doing it! The cost of each enlargement can thus be “spread out” among the insertions. This means that in the long term, the total time taken for adding m items to the array is O(m), and so the amortised time (i.e. time per insertion) is O(1).

(1) key_comp:
(2) value_comp:

4、find, count, lower_bound, upper_bound, equal_range

C++ map嵌套应用

最近开发中要用到STL,然后自己查看了一些资料,并写了一些代码。在使用中,想起了如果是map嵌套,该如何应用呢?下面是我的coding内容:         对于传统的map,我们只需要:   ...
  • zhanghuaichao
  • zhanghuaichao
  • 2016年12月31日 15:55
  • 564


作者:水哥 链接: 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转...
  • guojingjuan
  • guojingjuan
  • 2016年04月21日 10:00
  • 7142


stl中map的四种插入方法总结 方法一:pair 例: map mp; mp.insert(pair(1,"aaaaa")); 方法二:make_pair 例: map mp; mp...
  • F_Z_M
  • F_Z_M
  • 2017年09月28日 09:18
  • 718

java Map嵌套多个Map

package com.vmware.client; import com.vmware.util.Session; import com.vmware.vim25.DatastoreSummary...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2015年05月18日 10:28
  • 3536

python map()函数和lambda表达式

python map(fun,[arg]+)函数最少有两个参数,第一参数为一个函数名,第二个参数是对应的这个函数的参数(一般为一个或多个list)。>>>def fun(x): ... ret...
  • u013944212
  • u013944212
  • 2017年02月14日 10:39
  • 9815

mAP(mean average precision)

  • chenyanqiao2010
  • chenyanqiao2010
  • 2015年11月30日 16:38
  • 6448


检测出来的bbox的score按照iou将降序排序,所以每添加一个样本,就代表阈值降低一点。这样就是可以有很多种阈值,每个阈值情况下计算一个prec和recall。 d:对模型检测到的bbox循环: ...
  • lixiang_whu
  • lixiang_whu
  • 2017年03月21日 20:03
  • 3910


该方法用来追加另一个Map对象到当前Map集合对象,它会把另一个Map集合对象中的所有内容添加到当前Map集合对象。 语法  putAll(Map m)  m:一个Map集合对象。 ...
  • w2222288
  • w2222288
  • 2015年07月01日 10:16
  • 13556


废话不多说,直接上代码块!import java.util.HashMap; import java.util.Map;/** * Map集合嵌套Map集合遍历 * Created by aong...
  • aongi
  • aongi
  • 2017年04月28日 01:32
  • 3084


1、$.map(array,function) 语法分析:为包装集中的每一个元素调用回调函数,并将返回值收集到jQuery对象的实例中,在回调函数中,this指向每次迭代中的当前DOM元素。...
  • liaozhongping
  • liaozhongping
  • 2016年12月07日 14:04
  • 1722