1 Sequences
1.1 vector
vector<T, Allocator>
增加容量
reserve(size_type n)
缩小容量方法
template <class T, class Allocator>
void shrink_to_fit(vector<T, Allocator> &v)
{
vector<T, Allocator> tmp(v.begin(), v.end());
tmp.swap(v);
}
删除元素
clear()
赋值
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
1.2 list
list<T, Allocator>
删除元素
clear()
赋值
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
移除并拼接(两者不必已排序)
splice(iterator pos, list &x)
splice(iterator pos, list &x, iterator i)(能同一个list)
splice(iterator pos, list &x, iterator f, iterator l)(能同一个list)
remove(const T &val)
remove_if(Predicate p)
unique()
unique(BinaryPredicate p)
移除并拼接(两者必须已排序,不能同一个list)
merge(list &x)
merge(list &x, StrictWeakOrdering Comp)
reverse()
sort()
1.3 forward_list
forward_list<T, Allocator>
没有 insert erase push_back pop_back
insert_after
erase_after
aplice_after
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
1.4 deque
deque<T, Allocator>
以动态区段化(dynamic segmented)的数组实现
对deque排序:应该先将此deque复制到vector,再对此vector排序,最后再复制回来
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
2 Associative Containers
2.1 set
set<Key, Compare, Allocator>
swap(set &)
lower_bound(const key_type &k)
upper_bound(const key_type &k)
equal_range(const key_type &k)
2.2 map
map<Key, T, Compare, Allocator>
2.3 multiset
multiset<Key, Compare, Allocator>
2.4 multimap
multimap<Key, T, Compare, Allocator>
2.5 unordered_set
unordered_set<Key, HashFun, EqualKey, Allocator>
2.6 unordered_map
unordered_map<Key, T, HashFun, EqualKey, Allocator>
2.7 unordered_multiset
unordered_multiset<Key, HashFun, EqualKey, Allocator>
2.8 unordered_multimap
unordered_multimap<Key, T, HashFun, EqualKey, Allocator>
1.1 vector
vector<T, Allocator>
增加容量
reserve(size_type n)
缩小容量方法
template <class T, class Allocator>
void shrink_to_fit(vector<T, Allocator> &v)
{
vector<T, Allocator> tmp(v.begin(), v.end());
tmp.swap(v);
}
删除元素
clear()
赋值
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
1.2 list
list<T, Allocator>
删除元素
clear()
赋值
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
移除并拼接(两者不必已排序)
splice(iterator pos, list &x)
splice(iterator pos, list &x, iterator i)(能同一个list)
splice(iterator pos, list &x, iterator f, iterator l)(能同一个list)
remove(const T &val)
remove_if(Predicate p)
unique()
unique(BinaryPredicate p)
移除并拼接(两者必须已排序,不能同一个list)
merge(list &x)
merge(list &x, StrictWeakOrdering Comp)
reverse()
sort()
1.3 forward_list
forward_list<T, Allocator>
没有 insert erase push_back pop_back
insert_after
erase_after
aplice_after
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
1.4 deque
deque<T, Allocator>
以动态区段化(dynamic segmented)的数组实现
对deque排序:应该先将此deque复制到vector,再对此vector排序,最后再复制回来
assign(InputIterator first, InputIterator last)
assign(size_type n, const T &x)
2 Associative Containers
2.1 set
set<Key, Compare, Allocator>
swap(set &)
lower_bound(const key_type &k)
upper_bound(const key_type &k)
equal_range(const key_type &k)
2.2 map
map<Key, T, Compare, Allocator>
2.3 multiset
multiset<Key, Compare, Allocator>
2.4 multimap
multimap<Key, T, Compare, Allocator>
2.5 unordered_set
unordered_set<Key, HashFun, EqualKey, Allocator>
2.6 unordered_map
unordered_map<Key, T, HashFun, EqualKey, Allocator>
2.7 unordered_multiset
unordered_multiset<Key, HashFun, EqualKey, Allocator>
2.8 unordered_multimap
unordered_multimap<Key, T, HashFun, EqualKey, Allocator>
3 Container Adapters
3.1 stack
stack<T, Sequence>
默认deque,其它都可以,即vector和list
Front Insertion Sequence或Back Insertion Sequence
3.2 queue
queue<T, Sequeuece>
默认deque,可为list
Front Insertion Sequence且Back Insertion Sequence,因此vector不满足
3.3 priority_queue
priority_queue<T, Sequeuece, Compare>
默认为小于比较,返回最大值,
默认vector,可为deque
用堆实现,因此要求可随机访问,list不可用。