Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::end,std::cend

      From cppreference.com
      <cpp‎ |iterator
       
       
      Iterator library
      Iterator concepts
      Iterator primitives
      Algorithm concepts and utilities
      Indirect callable concepts
      Common algorithm requirements
      (C++20)
      (C++20)
      (C++20)
      Utilities
      (C++20)
      Iterator adaptors
      Range access
      (C++11)(C++14)
      (C++14)(C++14)  
      endcend
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++17)(C++20)
      (C++17)
      (C++17)
       
      Defined in header<array>
      Defined in header<deque>
      Defined in header<flat_map>
      Defined in header<flat_set>
      Defined in header<forward_list>
      Defined in header<inplace_vector>
      Defined in header<iterator>
      Defined in header<list>
      Defined in header<map>
      Defined in header<regex>
      Defined in header<set>
      Defined in header<span>
      Defined in header<string>
      Defined in header<string_view>
      Defined in header<unordered_map>
      Defined in header<unordered_set>
      Defined in header<vector>
      template<class C>
      auto end( C& c)-> decltype(c.end());
      (1)(since C++11)
      (constexpr since C++17)
      template<class C>
      auto end(const C& c)-> decltype(c.end());
      (2)(since C++11)
      (constexpr since C++17)
      template<class T,std::size_t N>
      T* end( T(&array)[N]);
      (3)(since C++11)
      (noexcept since C++14)
      (constexpr since C++14)
      template<class C>

      constexprauto cend(const C& c)noexcept(/* see below */)

         -> decltype(std::end(c));
      (4)(since C++14)

      Returns an iterator to the end (i.e. the element after the last element) of the given range.

      1,2) Returnsc.end(), which is typically an iterator one past the end of the sequence represented byc.
      1) IfC is a standardContainer, returns aC::iterator object.
      2) IfC is a standardContainer, returns aC::const_iterator object.
      3) Returns a pointer to the end ofarray.
      4) Returnsstd::end(c), withc always treated as const-qualified.
      IfC is a standardContainer, returns aC::const_iterator object.

      range-begin-end.svg

      Contents

      [edit]Parameters

      c - a container or view with anend member function
      array - an array of arbitrary type

      [edit]Return value

      1,2)c.end()
      3)array+ N
      4)c.end()

      [edit]Exceptions

      4)
      noexcept specification:  
      noexcept(noexcept(std::end(c)))

      [edit]Overloads

      Custom overloads ofend may be provided for classes and enumerations that do not expose a suitableend() member function, yet can be iterated. The following overloads are already provided by the standard library:

      specializesstd::end
      (function template)[edit]
      specializesstd::end
      (function template)[edit]
      range-based for loop support
      (function)[edit]
      range-based for loop support
      (function)[edit]

      Similar to the use ofswap (described inSwappable), typical use of theend function in generic context is an equivalent ofusing std::end; end(arg);, which lets both theADL-selected overloads for user-defined types and the standard library function templates to appear in the same overload set.

      template<typename Container,typename Function>void for_each(Container&& cont, Function f){usingstd::begin;auto it= begin(cont);using std::end;auto end_it= end(cont); for(; it!= end_it;++it)        f(*it);}

      Overloads ofend found byargument-dependent lookup can be used to customize the behavior ofstd::ranges::end,std::ranges::cend, and other customization pointer objects depending onstd::ranges::end.

      (since C++20)

      [edit]Notes

      The non-array overloads exactly reflect the behavior ofC::end(). Their effects may be surprising if the member function does not have a reasonable implementation.

      std::cend is introduced for unification of member and non-member range accesses. See alsoLWG issue 2128.

      IfC is a shallow-const view,std::cend may return a mutable iterator. Such behavior is unexpected for some users. See alsoP2276 andP2278.

      [edit]Example

      Run this code
      #include <algorithm>#include <iostream>#include <vector> int main(){std::vector<int> v={3,1,4};if(std::find(std::begin(v), std::end(v),5)!= std::end(v))std::cout<<"Found a 5 in vector v!\n"; int w[]={5,10,15};if(std::find(std::begin(w), std::end(w),5)!= std::end(w))std::cout<<"Found a 5 in array w!\n";}

      Output:

      Found a 5 in array w!

      [edit]See also

      (C++11)(C++14)
      returns an iterator to the beginning of a container or array
      (function template)[edit]
      returns a sentinel indicating the end of a range
      (customization point object)[edit]
      returns a sentinel indicating the end of a read-only range
      (customization point object)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/iterator/end&oldid=177483"

      [8]ページ先頭

      ©2009-2025 Movatter.jp