C++primer笔记(21)

来源:互联网 发布:c语言最长升序片段 编辑:程序博客网 时间:2024/05/18 18:00

1:deque与vector比较:

a:vector只有push_back(n), deque有push_back(n)和push_front(n);

b:vector只有pop_back(), deque有pop_back(),和pop_front();

c:vector和deque都是顺序容器数组.

d:存在于std空间中,都有相应的头文件。

2:list

a:实例化list; list<int> a;

b:a.push_front(n) //从前面插入n;   a.push_back(n)//从后面插入n;  

c:list不是数组,不能使用下标,只能使用迭代器。std:list<int>::iteraor iter;

d:插入元素

   a.insert(a.begin(), 10) // 在a.begin()处插入10.

    a.insert(a.end(), 4, 20) //在a.end()处插入4个20.

   a.insert(a.begin(), b.begin(), b.end()) // 在a.begin处插入从b.begin()到b.end()处所有的元素。3个iterator。

   a.insert()才会返回迭代器,并指向添加的最后一个元素

e:/删除

  a.erase(iterator)//删除迭代器指向的元素;

  a.erase(a.begin(), iterator)// 从a.begin()到iterator。从处删,iterator处不删。

f:反转和排序

 a.reverse();

  a.sort();

3:map与multimap

a: map<int, string> a; multimap<int, string>ma;

b:a.insert(map<int, string>::value_type(1, "one"));  //用value_type 变成一对

   a.insert(make_pair(-1, "M one")); / /变成一对的方法 make_pair()

   a.insert(pair<int ,string>(1, 'one'));   // 

   a[10] = "one handuede"; //类似于数组,不能用于ma;

c: map<int, string>::iterator im;

   im = a.begin();

    cout<<im->first;

    cout<< im->second.c_str();

d:查找和判断

  对于multimap: im = ma.find(45);

   if(im != ma.end())

   size_t  = ma.count(45);  //查找结果的个数

e:删除

  if(im.erase(45) >0)cout<<"删除成功"  // 通过key(45)删除

  iterator = im.found(45) ; im.erase(iterator);  //通过迭代器删除

  









0 0