Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::data

      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)  
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++17)(C++20)
      (C++17)
      data
      (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>
      constexprauto data( C& c)-> decltype(c.data());
      (1)(since C++17)
      template<class C>
      constexprauto data(const C& c)-> decltype(c.data());
      (2)(since C++17)
      template<class T,std::size_t N>
      constexpr T* data( T(&array)[N])noexcept;
      (3)(since C++17)
      template<class E>
      constexprconst E* data(std::initializer_list<E> il)noexcept;
      (4)(since C++17)

      Returns a pointer to the block of memory containing the elements of the range.

      1,2) Returnsc.data().
      3) Returnsarray.
      4) Returnsil.begin().

      Contents

      [edit]Parameters

      c - a container or view with adata() member function
      array - an array of arbitrary type
      il - anstd::initializer_list

      [edit]Return value

      1,2)c.data()
      3)array
      4)il.begin()

      [edit]Exceptions

      1) May throw implementation-defined exceptions.

      [edit]Notes

      The overload forstd::initializer_list is necessary because it does not have a member functiondata.

      Feature-test macroValueStdFeature
      __cpp_lib_nonmember_container_access201411L(C++17)std::size(),std::data(), andstd::empty()

      [edit]Possible implementation

      First version
      template<class C>constexprauto data(C& c)-> decltype(c.data()){return c.data();}
      Second version
      template<class C>constexprauto data(const C& c)-> decltype(c.data()){return c.data();}
      Third version
      template<class T,std::size_t N>constexpr T* data(T(&array)[N])noexcept{return array;}
      Fourth version
      template<class E>constexprconst E* data(std::initializer_list<E> il)noexcept{return il.begin();}

      [edit]Example

      Run this code
      #include <cstring>#include <iostream>#include <string> int main(){std::string s{"Hello world!\n"}; char a[20];// storage for a C-style stringstd::strcpy(a, std::data(s));//  [s.data(), s.data() + s.size()] is guaranteed to be an NTBS since C++11 std::cout<< a;}

      Output:

      Hello world!

      [edit]See also

      obtains a pointer to the beginning of a contiguous range
      (customization point object)[edit]
      obtains a pointer to the beginning of a read-only contiguous range
      (customization point object)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/iterator/data&oldid=169889"

      [8]ページ先頭

      ©2009-2025 Movatter.jp