本人对于C++的学习仅限于表层使用,并未深刻研究底层,如有错漏,还请不吝赐教~
概述:接触到新事物总想弄明白Ta的一些基本情况,比如增查改删等操作如何进行...
·增
1:push_back()方法
vectorname.pushback( value )
这个应该都会吧~
2:emplace_back()
![95c86f1c6dd74edb7a3d921b9e82ff6e.png](https://i-blog.csdnimg.cn/blog_migrate/c9d652afb3e7bd1931768a2abdb5bbd9.jpeg)
![3f6f58f924608950788f7be314892970.png](https://i-blog.csdnimg.cn/blog_migrate/18664c3d2f74c9aa5f0dd92ca8c251ab.png)
emplace() 的第一个参数是一个迭代器,它确定了对象生成的位置。对象会被插入到迭代器所指定元素的后面。
在 emplace() 的第一个参数的后面,可以使用尽可能多的参数,只要它们是被插入对象的构造函数所需要的。在上面的代码片段中,第一次调用 emplace() 会得到一个由构造函数 string(5,'A') 生成的字符串对象。emplace() 会返回一个指向横入元素的迭代器,被用来在插入元素的后面,插入一个新的元素。
emplace_back() 在实现时,直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程
这个应该是为了减少内存拷贝和移动而新加入的特性,所有的标准库容器(array除外,因为它的长度不可改变,不能插入元素)都增加了类似的方法:emplace、emplace_hint、emplace_front、emplace_after和 emplace_back,有兴趣可以搜一下这些东西~
·插
先咕咕了,等我用到再说,放一篇文章在这,C++ vector插入元素(数据)详解
·查
1:find()
find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的。
查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器。
![574da28f4ea848060bc909b3be1d498b.png](https://i-blog.csdnimg.cn/blog_migrate/bb865e581dfbec804b33595d14f19087.jpeg)
如果vector中存放的是非基本数据类型,可以使用find_if(),参考链接
·遍历
姑且把遍历算到查找里面,问题应该不太大
//第一种遍历方式,下标
第一种方法编译会警告,查了下好像是因为.size()函数返回的是无符号数,与前面声明不一样,前面换成auto好像还是有问题,emmm,能跑就行~
·删
1:erase()
函数原型:iterator erase (iterator position); //删除指定元素
iterator erase (iterator first, iterator last); //删除指定范围内的元素
返回值:指向删除元素(或范围)的下一个元素。
for(it=iVec.begin();it!=iVec.end();)
{
if(*it % 3 ==0)
it=iVec.erase(it); //删除元素,返回值指向已删除元素的下一个位置
else
++it; //指向下一个位置
}
2:remove()
C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。
C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。
所以不太建议使用,就不展示了
3:pop_back()
删除最后一个元素
![a0bf95d132053f1df742532334e16c6a.png](https://i-blog.csdnimg.cn/blog_migrate/5c1f17b01c2bee1e7599b8a5848e3380.jpeg)
删除完了还能访问是什么操作