目录
前言
一、vector 特点
二、c++ 中使用
1、头文件
2、初始化
3、访问元素
4、获得 vector 的属性
5、增删改元素
6、特殊
参考文章
前言
本文章为学习过程中的总结,部分参考文章已附文末,欢迎内容上、排版上、表达上各种批评指正。
一、vector 特点
是顺序容器,支持随机访问;尾部添加元素时无需重新分配空间;T(访问) = a;初始创建时容量为 0,谨防数组越界;
二、c++ 中使用 1、头文件
#include
2、初始化
1)//容量缺省默认为 0,值缺省默认为 0
vector
var_name [(容量,值)];
2) // 初始化拷贝
vector
var_name (另一个同类 vector); 或 vector
var_name = 另一个同类 vector;
3)//直接赋值
vector
var_name = {elem1, elem2, elem3,};
4)//切片获取另一个 vector 的局部/全部
vector
var_name(another_vector.begin(), another_vector.end());
3、访问元素
1)创建迭代器访问
vector
::iterator i;//正向迭代器,i++
vector::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