STL
STL是标准模板库。
vector
本质上就是一个数组,但是它比数组更加地好用,提供了很多实用的接口。
1 | // 定义一个vector |
1 | // 遍历 |
1 | // 插入 我们需要用到迭代器 |
emplace_back()
在使用push_back函数往容器中增加新元素时,必须要有一个该对象的实例才行,而emplace_back可以不用,它可以直接传入对象的构造函数参数直接进行构造,减少一次拷贝和赋值操作。
1 | class stu_info { |
1 | vector<stu_info> v; |
set
set是集合,是一个内部自动有序且不含重复元素的容器。
set的定义:
1 | set<int> st; // 保存int类型的set |
set只能通过迭代器访问:
1 | set<int>::iterator it; |
插入:
1 | int x = 1 |
查找:
1 | set<iterator>::iterator it = st.find(1); // 查找1,返回迭代器 |
删除:
1 | st.erase(it);// it为要删除元素的迭代器 |
元素个数:
1 | cout<<st.size()<<endl; |
清空元素:
1 | st.clear(); |
emplace()
当使用插入时,我们创建一个对象,然后将其插入到多集中。使用emplace(),该对象就地构建。
1 | // C++ code to demonstrate difference between |
swap()
1 | s1.swap(s2); //交换两集合 |
string
可以通过下标访问和通过迭代器访问:
1 | string str = "abcd"; |
1 | // +号可以连接字符串 |
字符串长度
1 | printf("%d %d\n", str.length(), str.size()); //两个都一样 |
插入:
1 | int pos; |
删除:
1 | // 通过迭代器删除单个元素 |
清空:
1 | str.clear(); |
子串:
1 | int pos=2; |
查找:
1 | string str2; |
替换:
1 | int pos = 3; |
map
map是映射,定义了从一个key到value的映射,其中map中保存的所有key, value对中,key不能重复,但是value可以重复
1 | map<typename1, typename2> mp; // 从typename1类型到typename2类型的映射 |
1 | map<string, int> mp; // 从string类型的key到int类型的value的映射 |
访问:
1 | // 下标访问 |
查找:
1 | // find返回对应key value对的迭代器 |
删除:
1 | // 迭代器删除单个元素 |
map长度
1 | // size函数获取mp的key value对个数 |
priority_queue
https://www.cnblogs.com/yalphait/articles/8889221.html