一个封装了动态大小数组的STL容器,可以存放任意类型的数据。
头文件
#include
构造
-
vector <类型> 标识符;
-
vector <类型> 标识符(最大容量);
-
vector <类型> 标识符(最大容量, 初始值);
-
int a[3]={1, 2, 3};
vector vec(a, a+3); //将a数组的内容放入vec中
-
vector <vector <类型> > 标识符; //二维向量
常用函数
注:文末有Vector全部函数表格
void push_back(const T& x) | 向量尾部增加一个元素X |
---|---|
void pop_back() | 删除向量中最后一个元素 |
reference at(int pos) | 返回pos位置元素的引用 |
iterator begin() | 返回向量头指针,指向第一个元素 |
iterator end() | 返回向量尾指针,指向向量最后一个元素的下一个位置 |
int size() const | 返回向量中元素的个数 |
void clear() | 清空向量中所有元素 |
bool empty() const | 判断向量是否为空,若为空,则向量中无元素 |
实例
构造与插入删除
#include<bits/stdc++.h>
using namespace std;
template <class T> //定义函数模板
//用于输出vector全部内容的函数
void printvec(const vector <T> & v) {
//利用迭代器控制指向位置
for(auto it = v.begin(); it!=v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
int main(){
// 1、构造vector后单独插入
vector <int> vec;
vec.push_back(2);
cout << "1: "; printvec(vec);
// 2、利用已有数组构造vector
int a[5] = {1, 2, 3, 4, 5};
vector <int> v(a, a+5);
cout << "2: "; printvec(v);
//3、 二维数组长度
//3.1、 两个迭代器相减求长度
cout << "3: " << v.end()-v.begin();
//3.2、 size()函数求长度
cout << " " << v.size() << endl;
//4、在末尾增加元素
v.push_back(6);
cout << "4: "; printvec(v);
//5、删除末尾元素
v.pop_back();
cout << "5: "; printvec(v);
//6、在 begin()+3 的位置插入 12
v.insert(v.begin()+3, 12);
cout << "6: "; printvec(v);
//7、删除 begin()+3 的元素
v.erase(v.begin()+3);
cout << "7: "; printvec(v);
return 0;
}
运行结果
二维向量
#include<bits/stdc++.h>
using namespace std;
int main() {
vector<vector<int>> v(3); //v里有3个vector<int>容器
//插入元素
for(int i=0; i<3; i++) {
for(int j=0; j<5; j++) {
v[i].push_back(j);
}
}
//输出
for(int i=0; i<3; i++) {
for(int j=0; j<5; j++) {
cout << v[i][j] << " ";
}
cout << endl;
}
return 0;
}
运行结果
既然已经在vector里面塞vector了,何不再大胆点? vector里放pair, set, map等都可以。
全部函数
构造函数
vector() | 创建一个空vector |
---|---|
vector(int nSize) | 创建一个vector,元素个数为nSize |
vector(int nSize,const t& t) | 创建一个vector,元素个数为nSize,且值均为t |
vector(const vector&) | 复制构造函数 |
vector(begin,end) | 复制[begin,end)区间内另一个数组的元素到vector中 |
增加函数
void push_back(const T& x) | 向量尾部增加一个元素X |
---|---|
iterator insert(iterator it,const T& x) | 向量中迭代器指向元素前增加一个元素x |
iterator insert(iterator it,int n,const T& x) | 向量中迭代器指向元素前增加n个相同的元素x |
iterator insert(iterator it,const_iterator first,const_iterator last) | 向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据 |
删除函数
iterator erase(iterator it) | 删除向量中迭代器指向元素 |
---|---|
iterator erase(iterator first,iterator last) | 删除向量中[first,last)中元素 |
void pop_back() | 删除向量中最后一个元素 |
void clear() | 清空向量中所有元素 |
遍历函数
reference at(int pos) | 返回pos位置元素的引用 |
---|---|
reference front(): | 返回首元素的引用 |
reference back() | 返回尾元素的引用 |
iterator begin() | 返回向量头指针,指向第一个元素 |
iterator end() | 返回向量尾指针,指向向量最后一个元素的下一个位置 |
reverse_iterator rbegin() | 反向迭代器,指向最后一个元素 |
reverse_iterator rend() | 反向迭代器,指向第一个元素之前的位置 |
判断函数
bool empty() const | 判断向量是否为空,若为空,则向量中无元素 |
---|
大小函数
int size() const | 返回向量中元素的个数 |
---|---|
int capacity() const | 返回当前向量所能容纳的最大元素值 |
int max_size() const | 返回最大可允许的vector元素数量值 |
其他函数
void swap(vector&) | 交换两个同类型向量的数据 |
---|---|
void assign(int n,const T& x) | 设置向量中前n个元素的值为x |
void assign(const_iterator first,const_iterator last) | 向量中[first,last)中元素设置成当前向量元素 |
共 3 条回复
我哩个都
厉害
棒~
6