1. Vector
1.1 基本函数
1.1.1 构造函数
- 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中
1.1.2 插入函数
- 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)间的数据
1.1.3 删除函数
- iterator erase(iterator it):删除向量中迭代器指向元素
- iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
- void pop_back():删除向量中最后一个元素
- void clear():清空向量中所有元素
1.1.4 遍历函数
- reference at(int pos):返回pos位置元素的引用
- reference front():返回首元素的引用
- reference back():返回尾元素的引用
- iterator begin():返回向量头指针,指向第一个元素
- iterator end():返回向量尾指针,指向向量最后一个元素的下一个位置
- reverse_iterator rbegin():反向迭代器,指向最后一个元素
- reverse_iterator rend():反向迭代器,指向第一个元素之前的位置
1.1.5 判断函数
- bool empty() const:判断向量是否为空,若为空,则向量中无元素
1.1.6 大小函数
- int size() const:返回向量中元素的个数
- int capacity() const:返回当前向量张红所能容纳的最大元素值
- int max_size() const:返回最大可允许的vector元素数量值
1.1.7 其他函数
- void swap(vector&):交换两个同类型向量的数据
- void assign(int n,const T& x):设置向量中第n个元素的值为x
- void assign(const_iterator first,const_iterator last):向量中[first,last)中元素设置成当前向量元素
1.2 基本用法
#include <vector>
using namespace std;
1.2.1 创建数组:
vector<type> obj;
vector<type> obj(MaxNum);
vector<type> obj(MaxNum, init_value);
vector<vector<type> > obj; // 二维数组, 最外的 <> 有一个空格
1.2.2 在容器结尾输入&移除数据
obj.push_back(elem); // 插入
obj.pop_back(); // 移除
1.2.3 清除容器中所有数据
obj.clear();
1.2.4 实例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> obj; // 创建vector对象
int i, j;
// 输入数据
for(i = 0; i < 10; i ++)
{
obj.push_back(i);
cout << obj[i] << ",";
}
// 移除末尾数据
for(i = 0; i < 5; i ++)
obj.pop_back();
cout << endl;
// 输出
for(i = 0; i < obj.size(); i ++)
cout << obj[i] << ",";
cout << endl;
// 清除
obj.clear();
if(obj.size() == NULL)
cout << "NULL" << endl;
else
cout << obj.size() << endl;
return 0;
}
/*
输出结果:
0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,
NULL
*/
1.2.5 排序: 利用algorithm
库的sort
函数
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> obj;
obj.push_back(1);
obj.push_back(3);
obj.push_back(0);
// 升序排序
sort(obj.begin(), obj.end());
cout << "min to max:";
for(int i = 0; i < obj.size(); i ++)
cout << obj[i] << ",";
cout << endl;
cout << "max to min:";
// reverse翻转
reverse(obj.begin(), obj.end());
for(int i = 0; i < obj.size(); i ++)
cout << obj[i] << ",";
return 0;
}
/*
输出结果:
min to max:0,1,3,
max to min:3,1,0,
*/
给sort传入参数实现降序排序:
bool compare(int a, int b)
{
return a < b; // 升序排列
// return a > b; // 降序排列
}
int a[5] = {2, 4, 1, 3, 5};
sort(a, a + 20, compare);
for(int i = 0; i < 5; i ++)
cout << a[i] << ",";
/*
输出结果:
1,2,3,4,5
*/
1.2.6 访问**(直接数组访问&迭代器访问)**
// 数组访问
for(int i = 0; i < obj.size(); i ++)
cout << obj[i] << " ";
// 迭代器访问
// 声明一个迭代器来访问vector容器 -> 遍历或者指向vector容器的元素
vector<int>::iterator it;
for(it = obj.begin(); it != obj.end(); it ++)
cout << *it << " ";
1.2.7 创建二维数组
- 方法一
int N = 5, M = 6;
vector<vector<int> > obj(N); // 定义二维数组大小 N 行
for(int i = 0; i < obj.size(); i ++) // N 行 M 列, 值全为0
{
obj[i].resize(M);
}
for(int i = 0; i < obj.size(); i ++)
{
for(int j = 0; j < obj[i].size(); j ++)
cout << obj[i][j] << " ";
cout << endl;
}
- 方法二
int N = 5, M = 6;
vector<vector<int> > obj(N, vector<int>(M)); // 定义二维数组 N 行 M 列
for(int i = 0; i < obj.size(); i ++)
{
for(int j = 0; j < obj.size(); j ++)
cout << obj[i][j] << " ";
cout << endl;
}
/*
输出结果:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
*/
2. Deque
Reference:
来源:CSDN
作者:不求上进的鱼仔
链接:https://blog.csdn.net/u013347145/article/details/104212759