C++17、STL——Vector

来源:互联网 发布:js单选按钮取消选中 编辑:程序博客网 时间:2024/06/07 13:48

关于STL主要介绍最常用的Vector、Map、 List。

vector是一种线性容器,可以简单地看作是一个动态的数组,即犹如冰糖葫芦一样的一串连续的空间。

下面是vector的简单示例:


示例结果如下:


迭代器不止++的重载操作,还可以像数组那样+n。示例如下:

        vector<int>vec;for(int i=0;i<10;i++){vec.push_back(i);}vector<int>::iterator iter = vec.begin();cout << vec.size() << endl;cout << *(iter+vec.size()/2) <<endl;


注意:在使用erase()函数定点删除一个元素后,不要再次接着使用相应的迭代器,反则会出现内存指向错误。这一点可以通过注释掉break观测到。

具体的原因在于vector实现的时候,删除元素,以及插入元素,都会出现重新申请内存空间的情况(冰糖葫芦换了个竹签,还想从之前的竹签上吃到糖葫芦,就会造成硌着牙或扎着嘴),进而造成之前的迭代器指向失效。

不仅vector如此,其它的容器基本也如此。

0 0
原创粉丝点击