常见STL库的使用
0x01 vector
vector动态数组,可定义任意类型变量
vector<typename> name;
方式一: 构造一个某类型的空容器:
vector<数据类型> 函数名; 初始化为空。
vector<int> v1; //构造int类型的空容器
方式二: 构造一个含有n个val的某类型容器:
vector<数据类型> 函数名(a,b).定义a个空间,都初始化为b。
vector<int> v2(10, 2); //构造含有10个2的int类型容器
方式三: 拷贝构造某类型容器的复制品:
vector<数据类型> 函数名1(函数名2),把动态数据2复制给动态数组1
vector<int> v3(v2); //拷贝构造int类型的v2容器的复制品
方式四: 使用迭代器拷贝构造某一段内容:
vector<数据类型> 函数名1(函数名2.begin(),函数名2.end())把动态数组2复制给动态数组1。
vector<int> v4(v2.begin(), v2.end()); //使用迭代器拷贝构造v2容器的某一段内容
遍历
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v(10, 2);
//正向迭代器遍历容器
vector<int>::iterator it = v.begin();
while (it != v.end())
{
cout << *it << " ";
it++;
}
cout << endl;
return 0;
}
其余常见操作
1 size(),其表示为当前容器中的数据个数
cout << v.size() << endl;
2 push_back(), 向后插入元素
a.push_back(x);
3 访问
back 返回容器中最后的一个元素的引用
front 返回容器中第一个元素的引用
0x02 map
可以在内部套任意容器
map ->有序,每次操作O(logN)
unordered_map ->无序,每次操作O(1)
map<type,type> name;
或者
map<map<type,type>,int> name;
0x03 set
set ->有序,每次操作O(logN)
unordered_set ->无序,每次操作O(1)
set<type> name;
use.find(x):find 是查找 x 是否存在。
use.count(x):返回元素 x 的数量。(有为 1,没有为 0)
use.size():容器内元素数量
use.insert(x):插入元素 x
use.erase(x):将值为 x 的元素删除。
use.clear():清空 unordered_set