• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function template
    <iterator>

    std::data

    namespace std {
      template <class C>
      constexpr auto data(C& c) -> decltype(c.data());          // (1) C++17
    
      template <class C>
      constexpr auto data(const C& c) -> decltype(c.data());    // (2) C++17
    
      template <class T, std::size_t N>
      constexpr T* data(T (&array)[N]) noexcept;                // (3) C++17
    
      template <class E>
      constexpr const E* data(initializer_list<E> il) noexcept; // (4) C++17
    }
    

    概要

    コンテナの要素が格納されたメモリ領域へのポインタを取得する。

    戻り値

    • (1), (2) : return c.data();
    • (3) : return array;
    • (4) : return il.begin();

    備考

    #include <vector>
    #include <iostream>
    
    void some_c_like_api_function(const int* arr, std::size_t arr_size)
    {
      std::cout << "array size:" << arr_size << " at " << static_cast<const void*>(arr) << std::endl;
    }
    
    int main()
    {
      int arr[4] = {};
      some_c_like_api_function(std::data(arr), std::size(arr));
      std::vector<int> v { 12 };
      some_c_like_api_function(std::data(v), std::size(v));
    }
    

    出力例

    array size:4 at 0x7fff0833f980
    array size:1 at 0x22e42b0
    

    バージョン

    言語

    • C++17

    処理系

    参照