6.3 STL函数
对容器操作类
sort(iterator_begin,iterator_end,cmp)快速排序find:顺序查找。find(iterator_begin, iterator_end, value),其中value为需要查找的值。reverse:翻转数组、字符串。reverse(iterator_begin, iterator_end())或reverse(a + begin, a + end)。unique:去除容器中相邻的重复元素。unique(ForwardIterator first, ForwardIterator last),返回值为指向 去重后 容器结尾的迭代器,原容器大小不变。与sort结合使用可以实现完整容器去重。move: 可以高效赋值容器,当你确定某一个容器在后面不需要被使用时可以使用move来降低时间复杂度,尤其是对vector<pair<int,int>>这类复杂容器而言
for(auto &&i : f){
set<int> temp = dp;
for(auto &&j : dp){
temp.emplace(i+j);
}
dp = move(temp);
}这是一个求一个数组取任意个数个数字相加的板子,其中使用到 move(temp) 就起到了降低时间复杂度的作用
对容器改动类
().emplace()().emplace_back()emplace是 C++11 引入的标准容器函数,用于直接在容器中构造对象,而不是先创建对象再插入。它适用于几乎所有 STL 容器(如vector,set,map,deque等),提供了比insert更高效的方式。- 例子:我们可以直接在
set<pair<int,int>>后插入 (x,y)
set<pair<int,int>> st;
//传统办法
st.insert(make_pair(x,y));
//emplace办法
st.emplace(x,y);- 对
vector而言,emplace_back()几乎可以完全代替push_back()而emplace则能代替insert
vector<pair<int,int>> v
v.push_back(make_pair(x,y)) == v.emplace_back(x,y);
v.insert(v.begin(), make_paie(x,y)) == v.emplace(v.begin(),x,y)