跳到主要内容

STL

各种方法

sort(LEFT, RIGHT+1, greater<int>()); // 降序排序
sort(LEFT, RIGHT+1, less<int>()); // 升序排序
reverse(LEFT, RIGHT+1); // 数组逆序
int unique(LEFT, RIGHT+1); // 去除连续重复成员,返回最后不重复成员的后一个迭代器
// {1, 1, 1, 2, 1, 1, 4, 3} → {1, 2, 1, 4, 3, 1, 4, 3} 返回4

// 二分查找
bool binary_search(LEFT, RIGHT+1, VALUE); //二分查找是否有值
lower_bound(LEFT, RIGHT+1, VALUE); //二分查找第一个>=VALUE的值返回迭代器
upper_bound(LEFT, RIGHT+1, VALUE); //二分查找第一个>VALUE的值返回迭代器

各种数据类型

vector<int> v; // int类型容器
pair<int, int> p; // 数对
stack<int> s; // 栈
queue<int> q; // 队列
deque<int> d; // 双端队列

priority_queue<int> d; // 大小根堆
set<int> s; // 红黑树
map<int, int> m; // 红黑树

multimap<int, int> mm; // 支持重复数据的map
multiset<int> ms; // 支持重复数据的set
bitset<N> b; // 节省空间的01串数组

vector

vector<int> v;
for (int i=0;i<10;i)
v.bush_back(i); // 尾插数据

// 遍历输出
for(int i=0;i<v.size();i++)
cout<<v[i];
for(auto it=v.begin();it<v.end();it++)
cout<<*it;
for(auto i:v)
cout<<i;

// 删除值为4的节点
for(auto it=v.begin();it<v.end();)
if(*it==4) it=v.erase(it); // erase方法返回下一节点的指针
else it++;

string

string str="196712";
str.substr(0, 4) == "1967" // 0:起始位置 4:长度