STL模板库
Vector
- 初始化
vector<int > a(n + 1, 0);
vector<vector<int > > a(n, vector<int>(m, 0));
vector<vector<vector<int> > > dp(n, vector<vector<int> >(n, vector<int>(n, 0)));
- 构建右值vector
vector<int >(n + 1, 0);
vector<vector<int > >(n + 1, vector<int > (n + 1, 0));
vector<vector<vector<int> > > (n, vector<vector<int> >(n, vector<int>(n, 0)));
- 读入
for(auto &it : a) cin >> it;
for(int i = 1;i <= n;i++) cin >> a[i];
已经重载了的operator
> < >= <= == = != []
- 常用成员方法
unique(iterator1, iterator2);//去重,返回去重后的尾迭代器
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );
sort(iterator1, iterator2, less<int>() / greater<int>());
push_back(const TYPE &val);
emplace_back(const TYPE &val);
pop_back();
back();
front();
clear();
size();
swap();//交换两个vector
lower_bound(iterator1, iterator2, val); // return iterator;
upper_bound(iterator1, iterator2, val); // return iterator;
reverse(iterator1, iterator2);
max_element(iterator1, iterator2); // return iterator
min_element(iterator1, iterator2); // return iterator
accumulate(iterator1, iterator2, init) // return sum + init
void resize( size_type size, TYPE val );
- 在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器
- 在指定位置loc前插入num个值为val的元素
- 在指定位置loc前插入区间[start, end)的所有元素
iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
Stack
常用成员方法
stack<int> s;
s.pop();
s.push();
s.top();
s.empty();
s.size();
String
初始化
string s(str);
string s(n, '0');
string s(str)
常用成员方法
string s;
s.size() / s.length();
s.insert(id(iterator), char);
s.erase(iterator);
s.find(const char);
s.sort();
s.substr();
s.reverse();
tolower() / toupper() : return char;
c_str(); return *char;
replace(begin, end, string2);
关于返回值
string::npos; //find()函数失配时的返回值
string与int之间的转化(#include)
int to_int(string s) {
stringstream Stream;
int ret;
Stream << s;
Stream >> ret;
Stream.clear();
return ret;
}
string to_String(int x) {
stringstream Stream;
string ret;
Stream << x;
Stream >> ret;
Stream.clear();
return ret;
}
Bitset
Operators
- != 返回真如果两个bitset不相等。
- == 返回真如果两个bitset相等。
- &= 完成两个bitset间的与运算。
- ^= 完成两个bitset间的异或运算。
- |= 完成两个
- ~ 反置bitset (和调用 flip()类似)
- <<= 把bitset向左移动
- >>= 把bitset向右移动
- [] 返回第x个位的引用
& ^ | >> << <<= >>=
!= == &= ^= |= ~ []
初始化
bitset<n> bit(0); // 创建一个n位的bitset,初始化为0
bitset<n> bit(s); // s 可以为unsigned或string
常用成员方法
any(); // 是否存在为1的二进制位
count(); // 二进制中1的个数
size(); // 二进制位的个数
set(); // 把所有位都制为1
reset(); // 把所有位都制位0
flip(); // 把所有位按位取反
to_ulong();// 返回unsigned long long
Stream << bit; // 把位集输入到Stream流中,建议输出string流
Deque
Operators
[]
常用成员方法
deque<int> q;
q.back();
q.front();
q.pop_back();
q.pop_front();
q.push_back();
q.push_front();
q.empty();
q.clear();
q.size();
q.resize(size_type num, TYPE val);
sort();
Queue / Priority_queue
常用成员方法
queue<int> q;
q.back();
q.front();
q.empty();
q.pop();
q.push();
q.size();
Map / Unordered_map/Multimap
Set / Unordered_set/Multiset
set<int> st;
st.lower_bound(x);
st.upper_bound(x);
Utility
- pair
pair<Type, Type> p;
Algorithm
nth_element(a.begin(), a.begin() + k, a.end(), less/greater);