CSP-S大纲以及学习笔记




1.类
c++面向对象笔记,博主自创。
2.STL模板
容器 container 和迭代器 iterator
众多STL例如queue、stack、vector等都被称为容器,对于容器,我们可以使用迭代器进行遍历,当然,由于现在的CCF支持使用auto,将不再使用iterator。
例如以下代码:
#include<bits/stdc++.h>
using namespace std;
int main() {vector<int> v;v.push_back(3);v.push_back(1);v.push_back(2);for(auto i:v) cout<<i<<" ";//输出 3 1 2 return 0;
}
如果执意使用iterator可以参考【C++ STL学习】容器迭代器 iterator详解,转载。
pair
C++pair学习笔记 博主自创。
tuple
C++ tuple 学习笔记 博主自创。
set
C++set学习笔记 博主自创。
multiset
这个和 set 唯一区别在于 set 不允许有重复元素,而 multiset 允许。
具体功能见:
//1. 定义(与set一致,无需额外参数)
multiset<int>ms1;
multiset<int,greater<int>>ms2;//降序multiset//2. 插入(允许重复,全部成功)
ms1.insert(2);
ms1.insert({2,3,2});//最终ms1存储{2,2,2,3}(升序)//3. 统计元素个数(返回实际次数,区别于set)
int cnt=ms1.count(2);//cnt=3(2出现3次)
int cnt2=ms1.count(4);//cnt2=0(4不存在)//4. 查找(返回首个匹配元素迭代器,需遍历所有重复元素)
auto it=ms1.find(2);
while(it!=ms1.end()&&*it==2){//遍历所有值为2的元素cout<<*it<<" ";//输出 2 2 2it++;
}//5. 删除(按值删会删除所有重复元素,需注意)
ms1.erase(2);//删除所有值为2的元素,ms1变为{3}
//若仅删单个重复元素:先find找到迭代器,再按迭代器删
ms2.insert({5,5,3});//ms2(降序)存储{5,5,3}
auto it2=ms2.find(5);
if(it2!=ms2.end()){ms2.erase(it2);//仅删首个5,ms2变为{5,3}
}
deque 以及 priority_queue
【C++闯关笔记】STL:deque与priority_queue的学习和使用,转载。
map 以及 multimap
map和multimap的详解,转载。
bitset
理解力高的可能我的这篇文章你能够看懂,那么你便理解了。
一份代码学会C++中的bitset - 洛谷保存站,博主自创。
C++之std::bitset使用精讲(全),转载。
