总结
注意点
0. map 想关的容器,成员是pair <key,vlaue>
1. set/multiset map/multimap,元素有序(插入值后,按照begin,end输出是有序的)
2. map/unordered_map 可以用[] 或at 访问元素
3. insert(val) 的返回值是 pair<iterater, bool >
4. 所有关联容器 erase能通过指定val 删除元素
5. 所有关联容器 能执行equal_range
6. set/multiset map/multimap,可以使用lower_bound,upper_bound
7. set/multiset map/multimap, 有双向迭代器 unordered 只有正向迭代器
set
构造
explicit set (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type()) ;
explicit set (const allocator_type& alloc) ;
template <class InputIterator >
set (InputIterator first, InputIterator last,
const key_compare& comp = key_compare (),
const allocator_type& = allocator_type ());
set (const set& x);
set (const set& x, const allocator_type& alloc);
set (set&& x);
set (set&& x, const allocator_type& alloc);
set (initializer_list<value_type> il,
const key_compare& comp = key_compare (),
const allocator_type& alloc = allocator_type ());
迭代器
容量
size_type size () const noexcept;
bool empty () const noexcept;
修改
pair <iterator,bool > insert (const value_type& val) ;
pair <iterator,bool > insert (value_type&& val) ;
iterator insert (const_iterator position, const value_type& val) ;
iterator insert (const_iterator position, value_type&& val) ;
template <class InputIterator >
void insert (InputIterator first, InputIterator last) ;
void insert (initializer_list <value_type> il) ;
iterator erase (const_iterator position) ;
size_type erase (const value_type& val) ;
iterator erase (const_iterator first, const_iterator last) ;
void clear () noexcept;
void swap (set & x) ;
template <class... Args>
pair <iterator,bool > emplace (Args&&... args) ;
template <class... Args>
iterator emplace_hint (const_iterator position, Args&&... args) ;
查找
size_type count (const value_type& val) const ;
const_iterator find (const value_type& val) const ;
iterator find (const value_type& val) ;
iterator lower_bound (const value_type& val) ;
const_iterator lower_bound (const value_type& val) const ;
iterator upper_bound (const value_type& val) ;
const_iterator upper_bound (const value_type& val) const ;
pair <const_iterator,const_iterator> equal_range (const value_type& val) const ;
pair <iterator,iterator> equal_range (const value_type& val) ;
multiset
构造
explicit multimap (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type()) ;
explicit multimap (const allocator_type& alloc) ;
template <class InputIterator >
multimap (InputIterator first, InputIterator last,
const key_compare& comp = key_compare (),
const allocator_type& = allocator_type ());
multimap (const multimap& x);
multimap (const multimap& x, const allocator_type& alloc);
multimap (multimap&& x);
multimap (multimap&& x, const allocator_type& alloc);
multimap (initializer_list<value_type> il,
const key_compare& comp = key_compare (),
const allocator_type& alloc = allocator_type ());
迭代器
容量
size_type size () const noexcept;
bool empty () const noexcept;
修改
pair <iterator,bool > insert (const value_type& val) ;
pair <iterator,bool > insert (value_type&& val) ;
iterator insert (const_iterator position, const value_type& val) ;
iterator insert (const_iterator position, value_type&& val) ;
template <class InputIterator >
void insert (InputIterator first, InputIterator last) ;
void insert (initializer_list <value_type> il) ;
iterator erase (const_iterator position) ;
size_type erase (const value_type& val) ;
iterator erase (const_iterator first, const_iterator last) ;
void clear () noexcept;
void swap (set & x) ;
template <class... Args>
pair <iterator,bool > emplace (Args&&... args) ;
template <class... Args>
iterator emplace_hint (const_iterator position, Args&&... args) ;
查找
size_type count (const value_type& val) const ;
const_iterator find (const value_type& val) const ;
iterator find (const value_type& val) ;
iterator lower_bound (const value_type& val) ;
const_iterator lower_bound (const value_type& val) const ;
iterator upper_bound (const value_type& val) ;
const_iterator upper_bound (const value_type& val) const ;
pair <const_iterator,const_iterator> equal_range (const value_type& val) const ;
pair <iterator,iterator> equal_range (const value_type& val) ;
map
构造
explicit map (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type()) ;
explicit map (const allocator_type& alloc) ;
template <class InputIterator >
map (InputIterator first, InputIterator last,
const key_compare& comp = key_compare (),
const allocator_type& = allocator_type ());
map (const map& x);
map (const map& x, const allocator_type& alloc);
map (map&& x);
map (map&& x, const allocator_type& alloc);
map (initializer_list<value_type> il,
const key_compare& comp = key_compare (),
const allocator_type& alloc = allocator_type ());
迭代器
访问元素
mapped_type& operator [] (const key_type& k);
mapped_type& operator [] (key_type&& k);
mapped_type& at (const key_type& k) ;
const mapped_type& at (const key_type& k) const ;
容量
size_type size () const noexcept;
bool empty () const noexcept;
修改
pair <iterator,bool > insert (const value_type& val) ;
pair <iterator,bool > insert (value_type&& val) ;
iterator insert (const_iterator position, const value_type& val) ;
iterator insert (const_iterator position, value_type&& val) ;
template <class InputIterator >
void insert (InputIterator first, InputIterator last) ;
void insert (initializer_list <value_type> il) ;
iterator erase (const_iterator position) ;
size_type erase (const value_type& val) ;
iterator erase (const_iterator first, const_iterator last) ;
void clear () noexcept;
void swap (set & x) ;
template <class... Args>
pair <iterator,bool > emplace (Args&&... args) ;
template <class... Args>
iterator emplace_hint (const_iterator position, Args&&... args) ;
查找
size_type count (const value_type& val) const ;
const_iterator find (const value_type& val) const ;
iterator find (const value_type& val) ;
iterator lower_bound (const value_type& val) ;
const_iterator lower_bound (const value_type& val) const ;
iterator upper_bound (const value_type& val) ;
const_iterator upper_bound (const value_type& val) const ;
pair <const_iterator,const_iterator> equal_range (const value_type& val) const ;
pair <iterator,iterator> equal_range (const value_type& val) ;
multimap
构造
explicit multimap (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type()) ;
explicit multimap (const allocator_type& alloc) ;
template <class InputIterator >
multimap (InputIterator first, InputIterator last,
const key_compare& comp = key_compare (),
const allocator_type& = allocator_type ());
multimap (const multimap& x);
multimap (const multimap& x, const allocator_type& alloc);
multimap (multimap&& x);
multimap (multimap&& x, const allocator_type& alloc);
multimap (initializer_list<value_type> il,
const key_compare& comp = key_compare (),
const allocator_type& alloc = allocator_type ());
迭代器
容量
size_type size () const noexcept;
bool empty () const noexcept;
修改
pair <iterator,bool > insert (const value_type& val) ;
pair <iterator,bool > insert (value_type&& val) ;
iterator insert (const_iterator position, const value_type& val) ;
iterator insert (const_iterator position, value_type&& val) ;
template <class InputIterator >
void insert (InputIterator first, InputIterator last) ;
void insert (initializer_list <value_type> il) ;
iterator erase (const_iterator position) ;
size_type erase (const value_type& val) ;
iterator erase (const_iterator first, const_iterator last) ;
void clear () noexcept;
void swap (set & x) ;
template <class... Args>
pair <iterator,bool > emplace (Args&&... args) ;
template <class... Args>
iterator emplace_hint (const_iterator position, Args&&... args) ;
查找
size_type count (const value_type& val) const ;
const_iterator find (const value_type& val) const ;
iterator find (const value_type& val) ;
iterator lower_bound (const value_type& val) ;
const_iterator lower_bound (const value_type& val) const ;
iterator upper_bound (const value_type& val) ;
const_iterator upper_bound (const value_type& val) const ;
pair <const_iterator,const_iterator> equal_range (const value_type& val) const ;
pair <iterator,iterator> equal_range (const value_type& val) ;
unordered_set
构造
```
//empty (1)
explicit unordered_set ( size_type n = /* see below */,
const hasher& hf = hasher(),
const key_equal& eql = key_equal(),
const allocator_type& alloc = allocator_type() );
explicit unordered_set ( const allocator_type& alloc );
//range (2)
template
unordered_set ( InputIterator first, InputIterator last,
size_type n = /* see below */,
const hasher& hf = hasher(),
const key_equal& eql = key_equal(),
const allocator_type& alloc = allocator_type() );
//copy (3)
unordered_set ( const unordered_set& ust );
unordered_set ( const unordered_set& ust, const allocator_type& alloc );
//move (4)
unordered_set ( unordered_set&& ust );
unordered_set ( unordered_set&& ust, const allocator_type& alloc );
//initializer list (5)
unordered_set ( initializer_list il,
size_type n = /* see below */,
const hasher& hf = hasher(),
const key_equal& eql = key_equal(),
const allocator_type& alloc = allocator_type() );
```
迭代器
容量
size_type size () const noexcept ;
bool empty () const noexcept ;
修改
(1 ) single
pair<iterator,bool > insert ( const value_type& val ) ;
(2 ) single,move
pair<iterator,bool > insert ( value_type&& val ) ;
(3 ) with hint,single
iterator insert ( const_iterator hint, const value_type& val ) ;
(4 ) with hint,single,move
iterator insert ( const_iterator hint, value_type&& val ) ;
(5 ) range
template <class InputIterator >
void insert ( InputIterator first, InputIterator last ) ;
(6 ) initializer_list
void insert ( initializer_list<value_type> il ) ;
iterator erase ( const_iterator position ) ;
size_type erase ( const key_type& k ) ;
iterator erase ( const_iterator first, const_iterator last ) ;
void clear () noexcept ;
void swap (multimap& x) ;
template <class ... Args>
pair<iterator,bool > emplace (Args&&... args) ;
template <class ... Args>
iterator emplace_hint (const_iterator position, Args&&... args) ;
查找
size_type count (const value_type& val) const ;
const_iterator find (const value_type& val) const ;
iterator find (const value_type& val) ;
pair<const_iterator,const_iterator> equal_range (const value_type& val) const ;
pair<iterator,iterator> equal_range (const value_type& val) ;
特殊(待补充)
bucket_count
max_bucket_count
bucket_size
bucket
load_factor
max_load_factor
rehash
reserve
hash_function
key_eq
get_allocator
unordered_map
构造
explicit unordered_map ( size_type n = ,
const hasher& hf = hasher(),
const key_equal& eql = key_equal(),
const allocator_type& alloc = allocator_type() ) ;
explicit unordered_map ( const allocator_type& alloc ) ;
template <class InputIterator >
unordered_map ( InputIterator first, InputIterator last,
size_type n = ,
const hasher& hf = hasher (),
const key_equal& eql = key_equal (),
const allocator_type& alloc = allocator_type () );
unordered_map ( const unordered_map& ump );
unordered_map ( const unordered_map& ump, const allocator_type& alloc );
unordered_map ( unordered_map&& ump );
unordered_map ( unordered_map&& ump, const allocator_type& alloc );
unordered_map ( initializer_list<value_type> il,
size_type n = ,
const hasher& hf = hasher (),
const key_equal& eql = key_equal (),
const allocator_type& alloc = allocator_type () );
迭代器
容量
size_type size () const noexcept ;
bool empty () const noexcept ;
修改
(1 ) single
pair<iterator,bool > insert ( const value_type& val ) ;
(2 ) single,move
pair<iterator,bool > insert ( value_type&& val ) ;
(3 ) with hint,single
iterator insert ( const_iterator hint, const value_type& val ) ;
(4 ) with hint,single,move
iterator insert ( const_iterator hint, value_type&& val ) ;
(5 ) range
template <class InputIterator >
void insert ( InputIterator first, InputIterator last ) ;
(6 ) initializer_list
void insert ( initializer_list<value_type> il ) ;
iterator erase ( const_iterator position ) ;
size_type erase ( const key_type& k ) ;
iterator erase ( const_iterator first, const_iterator last ) ;
void clear () noexcept ;
void swap (multimap& x) ;
template <class ... Args>
pair<iterator,bool > emplace (Args&&... args) ;
template <class ... Args>
iterator emplace_hint (const_iterator position, Args&&... args) ;
查找
size_type count (const value_type& val) const ;
const_iterator find (const value_type& val) const ;
iterator find (const value_type& val) ;
pair<const_iterator,const_iterator> equal_range (const value_type& val) const ;
pair<iterator,iterator> equal_range (const value_type& val) ;
特殊(待补充)
bucket_count
max_bucket_count
bucket_size
bucket
load_factor
max_load_factor
rehash
reserve
hash_function
key_eq
get_allocator
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)