一、vector的简单介绍
vector是c++的STL提供的一个已经封装好的容器,可以理解为一个可变长的数组,vector的底层就是一个会自动扩容的顺序表吗,其中创建和增删查改等等都已经实现好了,并且也完成了封装。
#inclde <vector> // 需要包含的头文件
int main()
{
//1.名字为a1的int型可变长数组
vector<int> a1;
//2.大小为N,里面的值默认为0
vector<int> a2(N);
//3.大小为N的vector数组,创建了N个vector数组
vector<int> a3[N];
//4.大小为N,初始值为2
vector<int> a4(N, 2);
//5.初始化列表的创建方法
vector<int> a5 = {1, 2, 3, 4, 5};
//6.也可以存字符串,vector可以存放所有的数据类型
vector<string> a6;
//7.可以存结构体
vector<node> a7;
//8.二维可变长数组
vector<vector<int>> a8;
return 0;
}
二、vector内部函数的使用
1.size/empty
//size的使用
//empty:返回顺序表是否为空,(是一个bool类型的返回值)
//如果为空返true,否则返回false
void text_size()
{
//一维数组
vector<int> a1(6, 8);
for(int i = 0; i < a1.size(); i ++)
cout << a1[i] << " ";
cout << endl;
//二维数组
vector<vector<int>> a2(3, vector<int>(4, 5));
for(int i = 0; i < a2.size(); i ++)
{
//这里的a2相当于一个vector<int> a(4, 5)
for(int j = 0; j < a2.size(); j ++)
{
cout << a2[i][j] << " ";
}
cout << endl;
}
}
2.begin/end
//begin/end
//begin:返回起始位置的迭代器(左开)
//end:返回终点位置的下一个位置的迭代器(右闭)
void test_it()
{
vector<int> a(10, 1);
//迭代器类型为vector<int>::iterator,一般使用auto简化
for(auto it = a.begin(); it != a.end(); it ++)
{
cout << *it << " ";
}
cout << endl;
//使用范围for
for(auto x : a)
{
cout << x << " ";
}
cout << endl;
}
3.push_back/pop_back
//尾部增删元素
void test_io()
{
vector<int> a;
//尾插
a.push_back(1);
//尾删
a.pop_back();
}
4.front/back
//front:返回首元素
//back:返回尾元素
void test_fb()
{
vector<int> a(5);
for(int i = 0; i < 5; i ++)
{
a[i] = i + 1;
}
cout << a.front() << " " << a.back() << endl;
}
5.resize
//resize:修改vector大小
//1.如果大于原始的大小,多出来的位置填上默认值,一般是0
//2.如果小于原始的大小,相当于把原来的元素删除
void test_resize()
{
vector<int> a(5, 1);
a.resize(10);
a.resize(3);
}
6.clear
//clear清空
void test_clear()
{
vector<int> a(5, 1);
a.clear();
}