• 关联容器常用用法


    总结

    注意点
    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

    构造
    //empty (1)	
    explicit set (const key_compare& comp = key_compare(),
                  const allocator_type& alloc = allocator_type());
    explicit set (const allocator_type& alloc);
    //range (2)	可以使用数组当作range
    template <class InputIterator>
      set (InputIterator first, InputIterator last,
           const key_compare& comp = key_compare(),
           const allocator_type& = allocator_type());
    //copy (3)	
    set (const set& x);
    set (const set& x, const allocator_type& alloc);
    //move (4)	
    set (set&& x);
    set (set&& x, const allocator_type& alloc);
    //initializer list (5)	
    set (initializer_list<value_type> il,
         const key_compare& comp = key_compare(),
         const allocator_type& alloc = allocator_type());
    
    迭代器
    //双向迭代器
    //iterator begin,end
    //reverse_iterator rbegin,rend
    //const_iterator cbegin,cend
    //const_reverse_iterator crbegin,crend
    
    容量
    size_type size() const noexcept;
    
    bool empty() const noexcept;
    
    修改
    //insert 
    //single element (1)	
    pair<iterator,bool> insert (const value_type& val);
    pair<iterator,bool> insert (value_type&& val);
    //with hint (2)	如果迭代器位置正确可以提升插入效率
    iterator insert (const_iterator position, const value_type& val);
    iterator insert (const_iterator position, value_type&& val);
    //range (3)	
    template <class InputIterator>
      void insert (InputIterator first, InputIterator last);
    //initializer list (4)	
    void insert (initializer_list<value_type> il);
    
    //erase
    //(1)	
    iterator  erase (const_iterator position);
    //(2)	 这个重载很特别,类似于remove
    size_type erase (const value_type& val);
    //(3)	
    iterator  erase (const_iterator first, const_iterator last);
    
    //clear
    void clear() noexcept;
    
    //swap
    void swap (set& x);
    
    //emplace
    template <class... Args>
      pair<iterator,bool> emplace (Args&&... args);
    template <class... Args>
      iterator emplace_hint (const_iterator position, Args&&... args);
    
    查找
    //count 返回key等于val的元素个数
    size_type count (const value_type& val) const;
    
    //find
    const_iterator find (const value_type& val) const;
    iterator       find (const value_type& val);
    
    // lower_bound
          iterator lower_bound (const value_type& val);
    const_iterator lower_bound (const value_type& val) const;
    
    //upper_bound
          iterator upper_bound (const value_type& val);
    const_iterator upper_bound (const value_type& val) const;
    
    //equal_range 返回pair指示的一个区间,同样也是左闭右开
    pair<const_iterator,const_iterator> equal_range (const value_type& val) const;
    pair<iterator,iterator>             equal_range (const value_type& val);
    



    multiset

    构造
    //empty (1)	
    explicit multimap (const key_compare& comp = key_compare(),
                       const allocator_type& alloc = allocator_type());
    explicit multimap (const allocator_type& alloc);
    //range (2)	
    template <class InputIterator>
      multimap (InputIterator first, InputIterator last,
           const key_compare& comp = key_compare(),
           const allocator_type& = allocator_type());
    //copy (3)	
    multimap (const multimap& x);
    multimap (const multimap& x, const allocator_type& alloc);
    //move (4)	
    multimap (multimap&& x);
    multimap (multimap&& x, const allocator_type& alloc);
    //initializer list (5)	
    multimap (initializer_list<value_type> il,
         const key_compare& comp = key_compare(),
         const allocator_type& alloc = allocator_type());
    
    迭代器
    //双向迭代器
    //iterator begin,end
    //reverse_iterator rbegin,rend
    //const_iterator cbegin,cend
    //const_reverse_iterator crbegin,crend
    
    容量
    size_type size() const noexcept;
    
    bool empty() const noexcept;
    
    修改
    //insert 
    //single element (1)	
    pair<iterator,bool> insert (const value_type& val);
    pair<iterator,bool> insert (value_type&& val);
    //with hint (2)	如果迭代器位置正确可以提升插入效率
    iterator insert (const_iterator position, const value_type& val);
    iterator insert (const_iterator position, value_type&& val);
    //range (3)	
    template <class InputIterator>
      void insert (InputIterator first, InputIterator last);
    //initializer list (4)	
    void insert (initializer_list<value_type> il);
    
    //erase
    //(1)	
    iterator  erase (const_iterator position);
    //(2)	 这个重载很特别,类似于remove
    size_type erase (const value_type& val);
    //(3)	
    iterator  erase (const_iterator first, const_iterator last);
    
    //clear
    void clear() noexcept;
    
    //swap
    void swap (set& x);
    
    //emplace
    template <class... Args>
      pair<iterator,bool> emplace (Args&&... args);
    template <class... Args>
      iterator emplace_hint (const_iterator position, Args&&... args);
    
    查找
    //count 返回key等于val的元素个数
    size_type count (const value_type& val) const;
    
    //find
    const_iterator find (const value_type& val) const;
    iterator       find (const value_type& val);
    
    // lower_bound
          iterator lower_bound (const value_type& val);
    const_iterator lower_bound (const value_type& val) const;
    
    //upper_bound
          iterator upper_bound (const value_type& val);
    const_iterator upper_bound (const value_type& val) const;
    
    //equal_range 返回pair指示的一个区间,同样也是左闭右开
    pair<const_iterator,const_iterator> equal_range (const value_type& val) const;
    pair<iterator,iterator>             equal_range (const value_type& val);
    



    map

    构造
    //empty (1)	
    explicit map (const key_compare& comp = key_compare(),
                  const allocator_type& alloc = allocator_type());
    explicit map (const allocator_type& alloc);
    //range (2)	
    template <class InputIterator>
      map (InputIterator first, InputIterator last,
           const key_compare& comp = key_compare(),
           const allocator_type& = allocator_type());
    //copy (3)	
    map (const map& x);
    map (const map& x, const allocator_type& alloc);
    //move (4)	
    map (map&& x);
    map (map&& x, const allocator_type& alloc);
    //initializer list (5)	
    map (initializer_list<value_type> il,
         const key_compare& comp = key_compare(),
         const allocator_type& alloc = allocator_type());
    
    迭代器
    //双向迭代器
    //iterator begin,end
    //reverse_iterator rbegin,rend
    //const_iterator cbegin,cend
    //const_reverse_iterator crbegin,crend
    
    访问元素
    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;
    
    修改
    //insert 
    //single element (1)	
    pair<iterator,bool> insert (const value_type& val);
    pair<iterator,bool> insert (value_type&& val);
    //with hint (2)	如果迭代器位置正确可以提升插入效率
    iterator insert (const_iterator position, const value_type& val);
    iterator insert (const_iterator position, value_type&& val);
    //range (3)	
    template <class InputIterator>
      void insert (InputIterator first, InputIterator last);
    //initializer list (4)	
    void insert (initializer_list<value_type> il);
    
    //erase
    //(1)	
    iterator  erase (const_iterator position);
    //(2)	 这个重载很特别,类似于remove
    size_type erase (const value_type& val);
    //(3)	
    iterator  erase (const_iterator first, const_iterator last);
    
    //clear
    void clear() noexcept;
    
    //swap
    void swap (set& x);
    
    //emplace
    template <class... Args>
      pair<iterator,bool> emplace (Args&&... args);
    template <class... Args>
      iterator emplace_hint (const_iterator position, Args&&... args);
    
    查找
    //count 返回key等于val的元素个数
    size_type count (const value_type& val) const;
    
    //find
    const_iterator find (const value_type& val) const;
    iterator       find (const value_type& val);
    
    // lower_bound
          iterator lower_bound (const value_type& val);
    const_iterator lower_bound (const value_type& val) const;
    
    //upper_bound
          iterator upper_bound (const value_type& val);
    const_iterator upper_bound (const value_type& val) const;
    
    //equal_range 返回pair指示的一个区间,同样也是左闭右开
    pair<const_iterator,const_iterator> equal_range (const value_type& val) const;
    pair<iterator,iterator>             equal_range (const value_type& val);
    



    multimap

    构造
    //empty (1)	
    explicit multimap (const key_compare& comp = key_compare(),
                       const allocator_type& alloc = allocator_type());
    explicit multimap (const allocator_type& alloc);
    //range (2)	
    template <class InputIterator>
      multimap (InputIterator first, InputIterator last,
           const key_compare& comp = key_compare(),
           const allocator_type& = allocator_type());
    //copy (3)	
    multimap (const multimap& x);
    multimap (const multimap& x, const allocator_type& alloc);
    //move (4)	
    multimap (multimap&& x);
    multimap (multimap&& x, const allocator_type& alloc);
    //initializer list (5)	
    multimap (initializer_list<value_type> il,
         const key_compare& comp = key_compare(),
         const allocator_type& alloc = allocator_type());
    
    迭代器
    //双向迭代器
    //iterator begin,end
    //reverse_iterator rbegin,rend
    //const_iterator cbegin,cend
    //const_reverse_iterator crbegin,crend
    
    容量
    size_type size() const noexcept;
    
    bool empty() const noexcept;
    
    修改
    //insert 
    //single element (1)	
    pair<iterator,bool> insert (const value_type& val);
    pair<iterator,bool> insert (value_type&& val);
    //with hint (2)	如果迭代器位置正确可以提升插入效率
    iterator insert (const_iterator position, const value_type& val);
    iterator insert (const_iterator position, value_type&& val);
    //range (3)	
    template <class InputIterator>
      void insert (InputIterator first, InputIterator last);
    //initializer list (4)	
    void insert (initializer_list<value_type> il);
    
    //erase
    //(1)	
    iterator  erase (const_iterator position);
    //(2)	 这个重载很特别,类似于remove
    size_type erase (const value_type& val);
    //(3)	
    iterator  erase (const_iterator first, const_iterator last);
    
    //clear
    void clear() noexcept;
    
    //swap
    void swap (set& x);
    
    //emplace
    template <class... Args>
      pair<iterator,bool> emplace (Args&&... args);
    template <class... Args>
      iterator emplace_hint (const_iterator position, Args&&... args);
    
    查找
    //count 返回key等于val的元素个数
    size_type count (const value_type& val) const;
    
    //find
    const_iterator find (const value_type& val) const;
    iterator       find (const value_type& val);
    
    // lower_bound
          iterator lower_bound (const value_type& val);
    const_iterator lower_bound (const value_type& val) const;
    
    //upper_bound
          iterator upper_bound (const value_type& val);
    const_iterator upper_bound (const value_type& val) const;
    
    //equal_range 返回pair指示的一个区间,同样也是左闭右开
    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() ); ```
    迭代器
    //正向迭代器
    //iterator begin,end
    //const_iterator cbegin,cend
    
    容量
    size_type size() const noexcept;
    
    bool empty() const noexcept;
    
    修改
    //insert
    (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 );
    
    //eraes
    //by position (1)	
    iterator erase ( const_iterator position );
    //by key (2)	
    size_type erase ( const key_type& k );
    //range (3)	
    iterator erase ( const_iterator first, const_iterator last );
    
    //clear
    void clear() noexcept;
    
    //swap
    void swap (multimap& x);
    
    //emplace
    template <class... Args>
      pair<iterator,bool> emplace (Args&&... args);
    template <class... Args>
      iterator emplace_hint (const_iterator position, Args&&... args);
    
    查找
    //count 返回key等于val的元素个数
    size_type count (const value_type& val) const;
    
    //find
    const_iterator find (const value_type& val) const;
    iterator       find (const value_type& val);
    
    //equal_range 返回pair指示的一个区间,同样也是左闭右开
    pair<const_iterator,const_iterator> equal_range (const value_type& val) const;
    pair<iterator,iterator>             equal_range (const value_type& val);
    
    特殊(待补充)
    //Buckets
    bucket_count
    //Return number of buckets (public member function)
    max_bucket_count
    //Return maximum number of buckets (public member function)
    bucket_size
    //Return bucket size (public member type)
    bucket
    //Locate element's bucket (public member function)
    
    //Hash policy
    load_factor
    //Return load factor (public member function)
    max_load_factor
    //Get or set maximum load factor (public member function)
    rehash
    //Set number of buckets (public member function )
    reserve
    //Request a capacity change (public member function)
    
    //Observers
    hash_function
    //Get hash function (public member type )
    key_eq
    //Get key equivalence predicate (public member type)
    get_allocator
    //Get allocator (public member function)
    

    unordered_map

    构造
    //empty (1)	
    explicit unordered_map ( size_type n = /* see below */,
                             const hasher& hf = hasher(),
                             const key_equal& eql = key_equal(),
                             const allocator_type& alloc = allocator_type() );
    explicit unordered_map ( const allocator_type& alloc );
    //range (2)	
    template <class InputIterator>
      unordered_map ( 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_map ( const unordered_map& ump );
    unordered_map ( const unordered_map& ump, const allocator_type& alloc );
    //move (4)	
    unordered_map ( unordered_map&& ump );
    unordered_map ( unordered_map&& ump, const allocator_type& alloc );
    //initializer list (5)	
    unordered_map ( initializer_list<value_type> il,
                    size_type n = /* see below */,
                    const hasher& hf = hasher(),
                    const key_equal& eql = key_equal(),
                    const allocator_type& alloc = allocator_type() );
    
    迭代器
    //正向迭代器
    //iterator begin,end
    //const_iterator cbegin,cend
    
    容量
    size_type size() const noexcept;
    
    bool empty() const noexcept;
    
    修改
    //insert
    (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 );
    
    //eraes
    //by position (1)	
    iterator erase ( const_iterator position );
    //by key (2)	
    size_type erase ( const key_type& k );
    //range (3)	
    iterator erase ( const_iterator first, const_iterator last );
    
    //clear
    void clear() noexcept;
    
    //swap
    void swap (multimap& x);
    
    //emplace
    template <class... Args>
      pair<iterator,bool> emplace (Args&&... args);
    template <class... Args>
      iterator emplace_hint (const_iterator position, Args&&... args);
    
    查找
    //count 返回key等于val的元素个数
    size_type count (const value_type& val) const;
    
    //find
    const_iterator find (const value_type& val) const;
    iterator       find (const value_type& val);
    
    //equal_range 返回pair指示的一个区间,同样也是左闭右开
    pair<const_iterator,const_iterator> equal_range (const value_type& val) const;
    pair<iterator,iterator>             equal_range (const value_type& val);
    
    特殊(待补充)
    //Buckets
    bucket_count
    //Return number of buckets (public member function)
    max_bucket_count
    //Return maximum number of buckets (public member function)
    bucket_size
    //Return bucket size (public member type)
    bucket
    //Locate element's bucket (public member function)
    
    //Hash policy
    load_factor
    //Return load factor (public member function)
    max_load_factor
    //Get or set maximum load factor (public member function)
    rehash
    //Set number of buckets (public member function )
    reserve
    //Request a capacity change (public member function)
    
    //Observers
    hash_function
    //Get hash function (public member type )
    key_eq
    //Get key equivalence predicate (public member type)
    get_allocator
    //Get allocator (public member function)
    
  • 相关阅读:
    Linux服务器下载与上传文件
    Java代码实现定时器
    windows elasticsearch使用ik分词器插件后启动报错java.security.AccessControlException: access denied ("java.io.FilePermission" "D:...........pluginsik-analyzerconfigIKAnalyzer.cfg.xml" "read")
    windows elasticsearch搭集群启动失败failed to send join request to master....
    Oracle使用命令行登录提示ERROR: ORA-01017: invalid username/password; logon denied
    nrm : 无法加载文件 C:UsersTANGAppDataRoaming pm rm.ps1,因为在此系统上禁止运行脚本。
    Go 语言环境安装
    Go语言简介
    http 请求头的Cookie中的 JSESSIONID 是什么?
    什么是锚点?锚点有什么作用?
  • 原文地址:https://www.cnblogs.com/mgfsos/p/16058506.html
Copyright © 2020-2023  润新知