持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天.
本文记录学习C++的 vector的相关知识
一、什么是vector
c++的vector你可以理解为一个容器,你可以往这个容器中放入东西,但是一个容器只能放同一种类型的东西,比如你这个容器是放字符型的就不能放整形数据。
二、vector的创建和初始化
include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec1; //初始化容器,并规定类型为整形
vector<char> vec2(3,'a'); //初始化容器,并放入3个字符 a
vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去,内容和vec2一样
}
三、 vector的数据遍历
我们会用 vec.size() 来返回你这个vector有多少的数据,一般采用for循环进行遍历;
clude<vector>
using namespace std;
int main()
{
vector<int> vec1; //初始化容器,并规定类型为整形
vector<char> vec2(3,'a'); //初始化容器,并放入3个字符 a
vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
printf("11111111111111111\n");
for(int a = 0; a < vec1.size(); a++) {
cout << vec1[a] << endl;
}
printf("22222222222222222\n");
for(int b = 0; b < vec2.size(); b++) {
cout << vec2[b] << endl;
}
printf("33333333333333333\n");
for(int c = 0; c < vec3.size(); c++) {
cout << vec3[c] << endl;
}
printf("0000000000000000\n");
}
执行后的结果
xhh@cluo:~/study/misc$ g++ vector_study1.cpp
xhh@cluo:~/study/misc$ ./a.out
11111111111111111
22222222222222222
a
a
a
33333333333333333
a
a
a
0000000000000000
可以看到我们 vec1因为只是初始化没有放东西进去所以打出来是空的 vec2我们放了三个字符, vec3 拷贝的vec2都是一样的结果
四、 vector的数据放入
我们可以通过 push_back();的方式将对应的东西放到对应的容器里面
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec1; //初始化容器,并规定类型为整形
vector<char> vec2(3,'a'); //初始化容器,并放入3个字符 a
vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
// 往 vec1中放入数据
vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);
printf("11111111111111111\n");
for(int a = 0; a < vec1.size(); a++) {
cout << vec1[a] << endl;
}
printf("22222222222222222\n");
}
执行后的结果
xhh@cluo:~/study/misc$ g++ vector_study1.cpp
xhh@cluo:~/study/misc$ ./a.out
11111111111111111
1
2
3
22222222222222222
五、vector数据的清除
通过 pop_back(); 去清除现在vector容器中的最后一个数据(从末尾开始清除)。 通过 clear()来清除所有的数据,包括我们后续的所有数据。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec1; //初始化容器,并规定类型为整形
vector<char> vec2(3, 'a'); //初始化容器
vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
vector<char> vec4; //初始化容器
// 往 vec1中放入数据
vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);
vec4.push_back('a');
vec4.push_back('b');
vec4.push_back('c');
vec4.push_back('d');
for(int a = 0; a < vec1.size(); a++) {
cout << "vec1 =" << vec1[a] << endl;
}
printf("============\n");
vec2.pop_back(); // 清除vec2倒数第一个数据
for(int b = 0; b < vec2.size(); b++) {
cout << "vec2 =" << vec2[b] << endl;
}
printf("============\n");
vec3.clear(); // 清除 vec3中的所有数据
for(int c = 0; c < vec3.size(); c++) {
cout << "vec3 =" << vec3[c] << endl;
}
printf("============\n");
for(int d = 0; d < vec4.size(); d++) {
cout << "vec4 =" <<vec4[d] << endl;
}
printf("============\n");
vec4.pop_back(); // 清楚4的最后一个数据
for(int d = 0; d < vec4.size(); d++) {
cout << "after pop vec4 =" <<vec4[d] << endl;
}
}
执行后
xhh@cluo:~/study/misc$ g++ vector_study1.cpp
xhh@cluo:~/study/misc$ ./a.out
vec1 =1
vec1 =2
vec1 =3
============
vec2 =a
vec2 =a
============
============
vec4 =a
vec4 =b
vec4 =c
vec4 =d
============
after pop vec4 =a
after pop vec4 =b
after pop vec4 =c
六、判断是不是空容器
empty(); 用于判断是不是空的容器
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec1; //初始化容器,并规定类型为整形
vector<char> vec2(3, 'a'); //初始化容器
vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
vector<char> vec4; //初始化容器
// 往 vec1中放入数据
vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);
vec4.push_back('a');
vec4.push_back('b');
vec4.push_back('c');
vec4.push_back('d');
if ( vec1.empty() )
{
cout << "vec1 is empty!" << endl;
}
for(int a = 0; a < vec1.size(); a++) {
cout << "vec1 =" << vec1[a] << endl;
}
printf("============\n");
vec2.pop_back(); // 清除vec2倒数第一个数据
if ( vec2.empty() )
{
cout << "vec2 is empty!" << endl;
}
for(int b = 0; b < vec2.size(); b++) {
cout << "vec2 =" << vec2[b] << endl;
}
printf("============\n");
vec3.clear(); // 清除 vec3中的所有数据
if ( vec3.empty() )
{
cout << "vec3 is empty!" << endl;
}
for(int c = 0; c < vec3.size(); c++) {
cout << "vec3 =" << vec3[c] << endl;
}
printf("============\n");
if ( vec4.empty() )
{
cout << "vec4 is empty!" << endl;
}
for(int d = 0; d < vec4.size(); d++) {
cout << "vec4 =" <<vec4[d] << endl;
}
printf("============\n");
vec4.pop_back();
if ( vec4.empty() )
{
cout << "vec4 is empty!" << endl;
}
for(int d = 0; d < vec4.size(); d++) {
cout << "after pop vec4 =" <<vec4[d] << endl;
}
}
执行后
hh@cluo:~/study/misc$ g++ vector_study1.cpp
xhh@cluo:~/study/misc$ ./a.out
vec1 =1
vec1 =2
vec1 =3
============
vec2 =a
vec2 =a
============
vec3 is empty!
============
vec4 =a
vec4 =b
vec4 =c
vec4 =d
============
after pop vec4 =a
after pop vec4 =b
after pop vec4 =c