vector是STL中的一种容器, 是一种不定长的数组.
包含在vector头文件中
使用方式为
vector< int >vec; //定义了一个vec数组
vector< int > vec(10); //定义了元素数, 各元素都为0
有
size()函数 //返回数组元素数, 即数组大小
resize()函数 //重置数组大小
push_back(argu) //函数向后添加元素argu
pop_back() //删除最后一个元素
clear()函数 //将数组清空
resize()可以设置数组大小, 元素全为0
vector< int > vec(3); //元素数为3
vec.resize(5); //扩展为5, 元素值都为0
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector <int> vec;
cout << "vec.size() = " << vec.size() << endl;
vec.push_back(4);
vec.push_back(5);
cout << "vec.size() = " << vec.size() << endl;
vec.pop_back();
cout << "vec.size() = " << vec.size() << endl;
vec.resize(4);
cout << "vec.size() = " << vec.size() << endl;
}
有 :
begin()函数, 返回数组的第一个元素的位置
end()函数, 返回数组的最后一个元素的下一个位置
插入函数insert() //插入到当前指针位置, 原来的元素向后移
删除函数erase() //删除当前指针位置的元素, 之后的元素向前移动
判断是否为空函数empty() //返回bool数
代码示例:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int>vec;
for(int i = 0; i < 20; ++i) {
vec.push_back(i);
}
for(int i = 0; i < 20; ++i) {
cout << vec[i]<< endl;
}
vec.insert(vec.begin(), -1);
for(int i = 0; i < 20; ++i) {
cout << vec[i]<< endl;
}
vec.erase(vec.end() - 1);
for(int i = 0; i < 20; ++i) {
cout << vec[i]<< endl;
}
}
有三种打印方式
- 传统的下标, 如vec[1]
- vec.at(i), 使用at函数的参数表示位置
- 使用迭代器的方法
代码示例:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int>vec;
for(int i = 0; i < 20; ++i) {
vec.push_back(i);
}
for(int i = 0; i < 20; ++i) {
cout << vec[i]<< endl;
}
for(int i = 0; i < 20; ++i) {
cout << vec.at(i)<< endl;
}
vector<int>::iterator it = vec.begin();
while(it != vec.end()) {
cout << *it << endl;
it++;
}
}
一些相关函数
使用reverse将元素翻转
reverse(vec.begin(),vec.end());
//将元素翻转
使用sort排列
sort(vec.begin(), vec.end(), cmp);
cmp为自定义的比较函数
多维数组声明方式
vector< int> vec[100];
以上声明了一个元素数为100的vector数组
注意: 数组大小固定
同理有其他多维
vector < int > vec[100][100][100];
但这些除最后一维其他维都是固定的
另一种声明方式
vector < vector< int > > vec;
如:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector< vector<int> > vec(20);
for( int i = 0; i < 20; ++i ) {
vec[i].resize(20);
}
for( int i = 0; i < 20; ++i ) {
for( int j = 0; j < 20; ++j ) {
cout << vec[i][j] << ' ';
}
cout << endl;
}
cout << vec.size() << endl;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> vec(100);
for( int i = 0; i < 100; ++i ) {
cout << vec[i] << endl;
}
cout << vec.size() << endl;
vector <int> vecc;
vecc.resize(10000);
for( int i = 0; i < 10000; ++i ) {
cout << vecc[i] << ' ';
}
vec.push_back(3);
cout << endl;
for( int i = 0; i < 101; ++i ) {
cout << vec[i];
}
}