vector长度_C++ Vector一些常用操作的梳理

本人对于C++的学习仅限于表层使用,并未深刻研究底层,如有错漏,还请不吝赐教~

概述:接触到新事物总想弄明白Ta的一些基本情况,比如增查改删等操作如何进行...

·增

1:push_back()方法

vectorname.pushback( value )

这个应该都会吧~

2:emplace_back()

95c86f1c6dd74edb7a3d921b9e82ff6e.png

3f6f58f924608950788f7be314892970.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

如果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

删除完了还能访问是什么操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值