c++容器的操作方法总结

一.map

1.创建

typedef map<int,string> descrbe_map_;

descrbe_map_ devMap;

或者

map<string,string> messageIdMap;

2.增加元素

方法一:pair
例:
map<int, string> mp;
mp.insert(pair<int,string>(1,"aaaaa"));

方法二:make_pair
例:
map<int, string> mp;
mp.insert(make_pair<int,string>(2,"bbbbb"));

方法三:value_type
例:
map<int, string> mp;
mp.insert(map<int, string>::value_type(3,"ccccc"));

方法四:[]
例:
map<int, string> mp;
mp[4] = "ddddd";

四种方法异同:
前三种方法当出现重复键时,编译器会报错,而第四种方法,当键重复时,会覆盖掉之前的键值对。

3.删除元素

//迭代器刪除
iter = mapStudent.find("123");
mapStudent.erase(iter);

//用关键字刪除
int n = mapStudent.erase("123"); //如果刪除了會返回1,否則返回0

//用迭代器范围刪除 : 把整个map清空
mapStudent.erase(mapStudent.begin(), mapStudent.end());
//等同于mapStudent.clear()

4.查找元素

// find 返回迭代器指向当前查找元素的位置否则返回map::end()位置
iter = mapStudent.find("123");

if(iter != mapStudent.end())
  cout<<"Find, the value is"<<iter->second<<endl;
else
  cout<<"Do not Find"<<endl;

或者:

map<string,string>::iterator p;

for(p = devmap.begin(); p!=devmap.end();p++)

{

  if(p->first == 1){

  }else{

  }

}

5.map的元素大小

  int nSize = mapStudent.size();

6.map的基本操作函数:

     C++ maps是一种关联式容器,包含“关键字/值”对

     begin()         返回指向map头部的迭代器

     clear()        删除所有元素

     count()         返回指定元素出现的次数

     empty()         如果map为空则返回true

     end()           返回指向map末尾的迭代器

     equal_range()   返回特殊条目的迭代器对

     erase()         删除一个元素

     find()          查找一个元素

     get_allocator() 返回map的配置器

     insert()        插入元素

     key_comp()      返回比较元素key的函数

     lower_bound()   返回键值>=给定元素的第一个位置

     max_size()      返回可以容纳的最大元素个数

     rbegin()        返回一个指向map尾部的逆向迭代器

     rend()          返回一个指向map头部的逆向迭代器

     size()          返回map中元素的个数

     swap()           交换两个map

     upper_bound()    返回键值>给定元素的第一个位置

     value_comp()     返回比较元素value的函数

c++11 之emplace_back 与 push_back区别:

在容器尾部添加一个元素,这个元素原地构造,不需要触发拷贝构造和转移构造。而且调用形式更加简洁,直接根据参数初始化临时对象的成员

 

posted @ 2019-11-21 15:27  夜空释  阅读(666)  评论(0编辑  收藏  举报