C++:vector

vector

vector是表示可变大小数组的序列容器,像数组一样采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。

常用构造函数

  • vector():无参构造
  • vector(size_type n, const value_type& val = value_type()):构造并初始化n个val
  • vector (const vector& x);:拷贝构造
  • vector (InputIterator first, InputIterator last); :使用迭代器进行初始化构造
int main()
{
	vector<int> v1;//创空的的整形向量
	vector<int> v2(4, 100);//
	std::vector<int> v3(v2.begin(), v2.end()); //通过迭代器构造
	std::vector<int> v4(v3); //拷贝v3
}
  • assign()将值赋给容器
int main()
{
    std::vector<char> characters;
    characters.assign(5, 'a');//a a a a a

    characters.assign({'\n', 'C', '+', '+', '1', '1', '\n'});//C++11
}

容量

  • size ():返回容纳的元素数
  • capacity() :获取容量大小
    *[empty():检查容器是否为空
  • resize():改变vector的size
  • reserve( size_type new_cap );:预留存储空间

[注]capacity的代码在vs和g++下分别运行会发现,vs下capacity是按1.5倍增长的,g++是按2倍增长的。

元素访问

  • at():访问指定的元素,同时进行越界检查
  • operator[]:访问指定的元素
  • front():访问第一个元素
  • back():访问最后一个元素

vector 增删查改

  • push_back():尾插
  • pop_back ():尾删
  • insert():在position之前插入val
  • erase():删除position位置的数据
  • swap():交换两个vector的数据空间

迭代器

  • begin() 获取第一个数据位置的iterator/const_iterator
  • end()获取最后一个数据的下一个位的iterator/const_iterator
  • rbegin()获取最后一个数据位置的reverse_iterator,
  • rend()获取第一个数据前一个位置的reverse_iterator

vector 迭代器失效问题

  • 会引起其底层空间改变的操作,都有可能是迭代器失效,比如:resize、reserve、insert、assign、push_back等。
  • 指定位置元素的删除操作–erase。
  • 迭代器失效解决办法:在使用前,对迭代器重新赋值即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值