STL相关总结(待补充)

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

 

posted @ 2020-06-05 19:58  心媛意码  阅读(154)  评论(0编辑  收藏  举报