1.vector是动态连续数组;list是双链表;deque是双端队列.
2.关联容器set, map,multiset,multimap都是有序的;而unordered_xxx是无序的.
3.STL进行erase操作有一些区别:
//vector/deque 去偶数,只能erase返回下一个iterator给itv,否则wrong for (itv = v.begin(); itv != v.end();) { if (*itv % 2 == 0) itv = v.erase(itv); else itv++; } //list/set/map 去偶数,其iterator可以使用,erase后itl++方式,也可以使用返回itl方式 list<int>::iterator itl; for (itl = l.begin(); itl != l.end();) { if (*itl % 2 == 0) l.erase(itl++); //或者 itl = l.erase(itl); 注意此处不等价于l.erase(itl); itl++; 因为经过erase后,itl变成无效的了,此时自增非法. 而前面的虽然也是先删除后自增,但是它是在有效的基础上自增的. else itl++; }
此处参考文章:https://www.cnblogs.com/thanatos-longqishi/p/4423297.html
关于itl++的论述参考自:https://blog.csdn.net/ruibin_cao/article/details/84572396