【C++ 容器整理】vector 可变长动态数组

目录

前言

一、vector 特点

二、c++ 中使用

1. 头文件

2. 初始化

3. 访问元素

4. 获得 vector 的属性

5. 增删改元素

6. 特殊

参考文章


前言

本文章为学习过程中的总结,部分参考文章已附文末,欢迎内容上、排版上、表达上各种批评指正😀。


一、vector 特点

  • 是顺序容器,支持随机访问;
  • 尾部添加元素时无需重新分配空间;
  • T(访问) = a;
  • 初始创建时容量为 0,谨防数组越界;

二、c++ 中使用

1. 头文件

#include <vector>

2. 初始化

1)//容量缺省默认为 0,值缺省默认为 0

vector<ElementType> var_name [(容量,值)];

2) // 初始化拷贝

vector<ElementType> var_name (另一个同类 vector);

或 vector<ElementType> var_name = 另一个同类 vector;

3)//直接赋值

vector<ElementType> var_name = {elem1, elem2, elem3,};

4)//切片获取另一个 vector 的局部/全部

vector<ElementType> var_name(another_vector.begin(), another_vector.end());

3. 访问元素

1)创建迭代器访问

vector<ElementType>::iterator i;//正向迭代器,i++
vector<ElementType>::reverse_iterator j;//反向迭代器,j--
*i;//访问对应的元素值

2)迭代器定位

  • (正向迭代器)定位开头:i = var_name.begin();
  • (正向迭代器)末尾:i = var_name.end() - 1;//end() 返回最后一个元素后面位置的迭代器;
  • (反向)末尾:j = var_name.rbegin();
  • (反向)开头:j = var_name.rend();

3) 随机访问

在容量已知的情况下可以利用 var_name[k] 访问第 k + 1 个元素(k 从 0 开始);

不知道容量的话小心越界。

4) 头尾快速访问

  • var = var_name.front();
  • var = var_name.back();

5) 遍历

(正向迭代器)

for(i = var_name.begin(); i != var_name.end(); i++){

        cout<< *i;

}

(反向迭代器倒着输出)

for(j = var_name.rbegin(); i != var_name.rend(); j++){

        cout<< *j;

}

(随机访问)

for(int k = 0; k < var_name.size(); k++){

        cout<< var_name[k];

}

4. 获得 vector 的属性

1)判空 var_name.empty(); // 空返回 true

2)大小 var_name.size();

5. 增删改元素

1)末尾增加元素 var_name.push_back(elem1)

等同于 var_name.emplace(elem1) // 据说更高效

2) 定位插入(3 类)

  • iterator insert( iterator loc, const TYPE &val ); //在指定迭代器位置插入某值,返回插入值的迭代器
  • void insert( iterator loc, size_type num, const TYPE &val ); //要插入的迭代器位置,插入元素数量,元素的值
  • void insert( iterator loc, input_iterator start, input_iterator end ); //要插入的迭代器位置,插入元素迭代器起始~结束位置,便于插入某一段的元素进去

3)删除末尾 var_name.pop_back()

4)清空 var_name.clear()

5)定位删除

  • iterator erase(iterator position); // 指定某个迭代器的值删除
  • iterator erase(iterator first, iterator last); // 制定一段区间删除

6)修改:访问后直接改值;

6. 特殊

交换 var_name.swap(& another_vector);


参考文章

C++:vector 六种初始化方法 - 简书

[c++] vector中insert()的用法详解_turry的博客-CSDN博客_vector的insert

vector的remove和erase函数的区别_xzymmd的博客-CSDN博客_vector.erase

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值