参考

  • vector头文件
  • IDE:vs 2022

定义

  • std::vector<数据类型> 变量名;
  • std::vector v; //基本定义
  • std::vector v1{ 1,2,3,4,5 }; //直接初始化
  • std::vector v2(5); //成员容量为五个
  • std::vector v3(5, 100); //五个成员均为100

正文

容器方面,对成员的访问方式都可以通过[],即:

1
2
3
4
5
6
int main(){
std::vector<int> v{1,2,3,4,5};
std::cout << v[2] << std::endl; //合法

return 0;
}

size()

这个不多说,跟之前的array一样,返回vector的成员个数。


push_back()

1
2
3
4
5
6
7
int main(){
std::vector<int> v3(5, 100); //五个成员均为100

std::cout << v3.size() << std::endl;
v3.push_back(200);
std::cout << v3.size() << std::endl;
}

运行结果为:

也就是说v3扩容了,那么再来看看他所有成员的值。

利用c++提供的for循环:

1
2
3
for (int i : v3){
std::cout << i << std::endl;
}

得到结果:


assign()

在初始化的时候我们提到过:std::vector<int> v3(5, 100); ,即定义一个拥有五个成员且值都为100的vector。
而assign(),他会覆盖掉以前的值,也就是说即便你初始化过,后期添加或删除过,都可以用assign覆盖。

1
2
3
4
5
6
7
8
9
10
std::vector<int> v3(5, 100);	//五个成员均为100
for (int i : v3){
std::cout << i << std::endl;
}

v3.assign(10, 200);

for (int i : v3){
std::cout << i << std::endl;
}

得到结果:


clear()

有覆盖的方法,那么就会想到清空,clear就能够实现清空一个vector

1
2
3
4
5
6
7
8
9
10
std::vector<int> v3(5, 100);	//五个成员均为100
for (int i : v3){
std::cout << i << std::endl;
}

v3.clear();

for (int i : v3){
std::cout << i << std::endl;
}

发现清空之后没有值了


empty()

能清空就需要能判断是否为空

empty的返回值是布尔类型,vector为空返回true,不为空返回false

1
2
3
4
std::vector<int> v3(5, 100);	//五个成员均为100
std::cout << v3.empty() << std::endl;
v3.clear();
std::cout << v3.empty() << std::endl;

能够清楚的看到情况前后v3的状态:

0和1是正常的,规定里0代表false,1代表true


结语

STL记得还有挺多的,以前看过黑马的c++,用的少了现在从头理理吧。