【C++】蓝桥杯必备 算法竞赛常用STL万字总结_Cpt1024的博客-CSDN博客_算法竞赛pdf
【C/C++】STL详解_沉晓的博客-CSDN博客_c++的stl
【用法学习】C++ pair用法及使用sort函数对pair数据进行排序_荷叶田田_的博客-CSDN博客_sort对pair排序
1.排序
设一维容器nums
- sort(nums.begin(), d());
2.添加数据
设二维容器nums,添加元素,相当于添加一维容器,一维数组可以不写别名,直接给元素,或者用vector<int>(a.begin(),a.end())来赋值,a为一维容器
可以不取别名,也可以取,看具体用法
return vector<int>(result_set.begin(), d());
result.push_back(vector<int>{nums[i],nums[left],nums[right]});
3.删除元素
a.pop_back()
3.反转====reverse
和string表达一样
4.insert
reverse(s.begin()+i, s.end());//左闭右开
end()是最后一个元素的后一个位置,所以左闭右开,
源代码:双指针
void reverse(string& s, int start, int end){ //翻转,区间写法:左闭又闭 []for (int i = start, j = end; i < j; i++, j--) {swap(s[i], s[j]);}}
2.加空间resize()
s.resize(ordlen + 2 * count);//申请空间
3.前两个和vector相关,后面和队列相关
pop_back()删除
push_back()添加元素
a,back()返回第一个元素
a.front()返回最后一个元素
b = a.substr(i, j) 从i下标截取j个字符赋值给b
a.insert(i, '.') 在i的哪个下标位置插入点,原来的那个数后移
设nums2为一维容器
1.查找数据
如果到了末尾说明没有找到这个数据
nums_set.find(nums2[i]) != d()
2.添加数据
result_set.insert(nums2[i]);
auto val = result.find(target - nums[i]);//查找数据
if ( val != d()) {
return {val->second, i};
}
result.insert(pair<int, int>(nums[i], i));一般和pair使用,和之前的vector差不多
一般三个(set,map,数组)都可以互相覆盖
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result_set;unordered_set<int> nums_set(nums1.begin(), d());
nums_set直接加vector中的数据,其他都能这样使用
这里也给大家拓展一下字符串和数组有什么差别,
字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。
在C语言中,把一个字符串存入一个数组时,也把结束符 '