Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::map<Key,T,Compare,Allocator>::at

      From cppreference.com
      <cpp‎ |container‎ |map

      [edit template]
       
       
       
      std::map
      Member functions
      Non-member functions
      (until C++20)(until C++20)(until C++20)(until C++20)(until C++20)
      Deduction guides(C++17)
       
      T& at(const Key& key);
      (1)
      const T& at(const Key& key)const;
      (2)
      template<class K>
      T& at(const K& x);
      (3)(since C++26)
      template<class K>
      const T& at(const K& x)const;
      (4)(since C++26)

      Returns a reference to the mapped value of the element with specified key. If no such element exists, an exception of typestd::out_of_range is thrown.

      1,2) The key is equivalent tokey.
      3,4) The key comparesequivalent to the valuex. The reference to the mapped value is obtained as if by expressionthis->find(x)->second.
      The expressionthis->find(x) must be well-formed and have well-defined behavior, otherwise the behavior is undefined.
      These overloads participate in overload resolution only ifCompare istransparent. It allows calling this function without constructing an instance ofKey.

      Contents

      [edit]Parameters

      key - the key of the element to find
      x - a value of any type that can be transparently compared with a key

      [edit]Return value

      A reference to the mapped value of the requested element.

      [edit]Exceptions

      1,2)std::out_of_range if the container does not have an element with the specifiedkey.
      3,4)std::out_of_range if the container does not have the specified element, that is, iffind(x)== end() istrue.

      [edit]Complexity

      Logarithmic in the size of the container.

      Notes

      Feature-test macroValueStdFeature
      __cpp_lib_associative_heterogeneous_insertion202311L(C++26)Heterogeneous overloads for the remaining member functions inordered andunordered associativecontainers.(3,4)

      [edit]Example

      Run this code
      #include <cassert>#include <iostream>#include <map> struct LightKey{int o;};struct HeavyKey{int o[1000];}; // The container must use std::less<> (or other transparent Comparator) to// access overloads (3,4). This includes standard overloads, such as// comparison between std::string and std::string_view.bool operator<(const HeavyKey& x,const LightKey& y){return x.o[0]< y.o;}bool operator<(const LightKey& x,const HeavyKey& y){return x.o< y.o[0];}bool operator<(const HeavyKey& x,const HeavyKey& y){return x.o[0]< y.o[0];} int main(){std::map<int,char> map{{1,'a'},{2,'b'}};assert(map.at(1)=='a');assert(map.at(2)=='b');try{        map.at(13);}catch(conststd::out_of_range& ex){std::cout<<"1) out_of_range::what(): "<< ex.what()<<'\n';} #ifdef __cpp_lib_associative_heterogeneous_insertion// Transparent comparison demo.std::map<HeavyKey,char,std::less<>> map2{{{1},'a'},{{2},'b'}};assert(map2.at(LightKey{1})=='a');assert(map2.at(LightKey{2})=='b');try{        map2.at(LightKey{13});}catch(conststd::out_of_range& ex){std::cout<<"2) out_of_range::what(): "<< ex.what()<<'\n';}#endif}

      Possible output:

      1) out_of_range::what(): map::at:  key not found2) out_of_range::what(): map::at:  key not found

      Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 464C++98map did not have this member functionadded
      LWG 703C++98the complexity requirement was missingadded
      LWG 2007C++98the return value referred to the requested elementrefers to its mapped value

      [edit]See also

      access or insert specified element
      (public member function)[edit]
      finds element with specific key
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/map/at&oldid=131155"

      [8]ページ先頭

      ©2009-2025 Movatter.jp