Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>::insert_or_assign

      From cppreference.com
      <cpp‎ |container‎ |flat map
       
       
       
      std::flat_map
      Member types
      Member functions
      Non-member functions
      Helper classes
      Tags
      Deduction guides
       
      template<class M>
      std::pair<iterator,bool> insert_or_assign(const key_type& k, M&& obj);
      (1)(since C++23)
      template<class M>
      std::pair<iterator,bool> insert_or_assign( key_type&& k, M&& obj);
      (2)(since C++23)
      template<class K,class M>
      std::pair<iterator,bool> insert_or_assign( K&& k, M&& obj);
      (3)(since C++23)
      template<class M>
      iterator insert_or_assign( const_iterator hint,const key_type& k, M&& obj);
      (4)(since C++23)
      template<class M>
      iterator insert_or_assign( const_iterator hint, key_type&& k, M&& obj);
      (5)(since C++23)
      template<class K,class M>
      iterator insert_or_assign( const_iterator hint, K&& k, M&& obj);
      (6)(since C++23)
      1,2) If a key equivalent tok already exists in the container, assignsstd::forward<M>(obj) to themapped_type corresponding to the keyk. If the key does not exist, inserts the new value as if by
      The program is ill-formed if eitherstd::is_assignable_v<mapped_type&, M> orstd::is_constructible_v<mapped_type, M> isfalse.
      3,6) If a key equivalent tok already exists in the container, assignsstd::forward<M>(obj) to themapped_type corresponding to the keyk. Otherwise, equivalent to
      The conversion fromk intokey_type must construct an objectu, for whichfind(k)== find(u) istrue. Otherwise, the behavior is undefined.
      These overloads participate in overload resolution only if :
      Information on iterator invalidation is copied fromhere

      Contents

      [edit]Parameters

      k - the key used both to look up and to insert if not found
      hint - iterator to the position before which the new element will be inserted
      obj - the value to insert or assign

      [edit]Return value

      1-3) Thebool component istrue if the insertion took place andfalse if the assignment took place. The iterator component is pointing at the element that was inserted or updated.
      4-6) Iterator pointing at the element that was inserted or updated.

      [edit]Complexity

      1-3) Same as foremplace.
      4-6) Same as foremplace_hint.

      [edit]Notes

      insert_or_assign returns more information thanoperator[] and does not require default-constructibility of the mapped type.

      [edit]Example

      Run this code
      #include <flat_map>#include <iostream>#include <string> void print_node(constauto& node){std::cout<<'['<< node.first<<"] = "<< node.second<<'\n';} void print_result(autoconst& pair){std::cout<<(pair.second?"inserted: ":"assigned: ");    print_node(*pair.first);} int main(){std::flat_map<std::string,std::string> map;     print_result(map.insert_or_assign("a","apple"));    print_result(map.insert_or_assign("b","banana"));    print_result(map.insert_or_assign("c","cherry"));    print_result(map.insert_or_assign("c","clementine")); for(constauto& node: map)        print_node(node);}

      Output:

      inserted: [a] = appleinserted: [b] = bananainserted: [c] = cherryassigned: [c] = clementine[a] = apple[b] = banana[c] = clementine

      [edit]See also

      access or insert specified element
      (public member function)[edit]
      access specified element with bounds checking
      (public member function)[edit]
      inserts elements
      (public member function)[edit]
      constructs element in-place
      (public member function)[edit]
      inserts in-place if the key does not exist, does nothing if the key exists
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/flat_map/insert_or_assign&oldid=171981"

      [8]ページ先頭

      ©2009-2025 Movatter.jp