Это теоретический минимум по STL для занимающихся спортивным программированием, подмножество возможностей стандартной библиотеки C++, полезных для решения алгоритмических задач. Группировка преимущественно по заголовку и контексту использования. Почти все упоминаемые имена лежат в пространстве имен
std, для него и только для него следует использовать после
#includeusing namespace std;
<iostream>, <iomanip>
cout, cin, while (cin >> ...)
getline, while+getline, getline после cin
<iomanip>: fixed, setprecision, setw, setfill, hex/dec
<iomanip>: noskipws/skipws
cin/cout.tie(0); cin/cout.sync_with_stdio(false); endl vs '\n'
<cstdio>: printf/scanf для жирных инпутов
<vector>
clean != empty
begin, end, rbegin, rend
push_back, pop_back, emplace_back, front, back
insert
size, resize, capacity, reserve, swap hack/shrink_to_fit
vector<bool>
<string>
string(10, ' '), std::string("a") + "b"
length/size, substr
push_back
to_string, stoi
find, rfind, find_*_of, string::npos
<sstream>: stringstream ss("str"), ss.str()
<cctype>
isalpha, isalnum, isblank, isdigit, islower, isupper, isxdigit
tolower, toupper, использование совместно с transform
<deque>
<queue>: priority_queue
<tuple>: pair, make_pair, .first/.second; tuple, make_tuple, get<#>();
Лексикографическое сравнение
<map>, <set>
map, сортированность ключей
[key]= vs at, for (auto kv : mapa) { }
count, erase
set, insert
<unordered_set>, <unordered_map>
std::hash<T>::operator()
<algorithm>
min, max, minmax, max_element, min_element
sort, предикат с tie, stable_sort, is_sorted
sort/iota + next_permutation
unique/remove/remove_if + .erase
reverse
fill, copy, copy_n, <iterator>: back_inserter, istream_iterator
most vexing parse
find, find_if, count, count_if
search
includes, set_union, set_intersection, set_difference, set_symmetric_difference
lower_bound/upper_bound
<iterator>: begin(cont), end(cont), size(cont)
<numeric>: accumulate, partial_sum, iota
<cmath>
hypot, atan2, pi = atan(1) * 4
round, floor, ceil
abs
<complex>
<limits>: numeric_limits<int>::max()
<random>
<utility>: swap
<bitset>
<chrono>: std::chrono::high_resolution_clock::now(
)
<functional>
Compiler-specific: __builtin_popcount, __builtin_clz, __builtin_ctz, __gcd, __int128
Объяснения к каждому пункту под катом. Соавтор —
udpn. Большинство примеров кода любезно предоставлены
Evil_Stivie.
Еще вас могут заинтересовать:
Лексика решений TopCoderГримуар C++( РазвернутоСвернуть )Продолжение в
части 2.