次の方法で共有


<array> 関数

<array> ヘッダーには、配列オブジェクトに対して動作する 3 つの非メンバー関数、getswap、およびto_arrayが含まれます。

get

配列の指定した要素への参照を返します。

template <std::size_t Index, class Type, std::size_t Size>
constexpr Type& get(std::array<Type, Size>& arr) noexcept;

template <std::size_t Index, class Type, std::size_t Size>
constexpr const Type& get(const std::array<Type, Size>& arr) noexcept;

template <std::size_t Index, class Type, std::size_t Size>
constexpr Type&& get(std::array<Type, Size>&& arr) noexcept;

template <std::size_t Index, class Type, std::size_t Size>
constexpr const Type&& get(const std::array<Type, Size>&& arr) noexcept;

テンプレートパラメーター

Index
要素のオフセット。

Type
要素の型。

Size
配列内の 要素の数。

パラメーター

arr
選択する配列。

#include <array>
#include <iostream>

using namespace std;

typedef array<int, 4> MyArray;

int main()
{
    MyArray c0 { 0, 1, 2, 3 };

    // display contents " 0 1 2 3"
    for (const auto& e : c0)
    {
        cout << " " << e;
    }
    cout << endl;

    // display odd elements " 1 3"
    cout << " " << get<1>(c0);
    cout << " " << get<3>(c0) << endl;
}
0 1 2 3
1 3

swap

2 つの std::swap オブジェクトを交換する の非メンバー テンプレートの特殊化。

template <class Type, std::size_t Size>
void swap(std::array<Type, Size>& left, std::array<Type, Size>& right);

テンプレートパラメーター

Type
要素の型。

Size
配列のサイズ。

パラメーター

left
交換する最初の配列。

right
交換する 2 番目の配列。

解説

このテンプレート関数は、left.swap(right) を実行します。

// std__array__swap.cpp
// compile with: /EHsc
#include <array>
#include <iostream>

typedef std::array<int, 4> Myarray;
int main()
{
    Myarray c0 = { 0, 1, 2, 3 };

    // display contents " 0 1 2 3"
    for (Myarray::const_iterator it = c0.begin();
        it != c0.end(); ++it)
        std::cout << " " << *it;
    std::cout << std::endl;

    Myarray c1 = { 4, 5, 6, 7 };
    c0.swap(c1);

    // display swapped contents " 4 5 6 7"
    for (Myarray::const_iterator it = c0.begin();
        it != c0.end(); ++it)
        std::cout << " " << *it;
    std::cout << std::endl;

    swap(c0, c1);

    // display swapped contents " 0 1 2 3"
    for (Myarray::const_iterator it = c0.begin();
        it != c0.end(); ++it)
        std::cout << " " << *it;
    std::cout << std::endl;

    return (0);
}
0 1 2 3
4 5 6 7
0 1 2 3

to_array

組み込みの配列を std::array オブジェクトに変換します。

// C++20
template <class Type, std::size_t Size>
constexpr std::array<std::remove_cv_t<Type>, Size> to_array(Type (&arr)[Size]);

// C++20
template <class Type, std::size_t Size>
constexpr std::array<std::remove_cv_t<Type>, Size> to_array(Type (&&arr)[Size]);

テンプレートパラメーター

Type
要素の型。

Size
入力配列のサイズ。

パラメーター

arr
変換に使用される入力配列。

// std_to_array.cpp
// Requires /std:c++20 or later

#include <array>
#include <iostream>

int main()
{
    int arr1[]{ 1, 2, 3 };
    std::array<int, 3> arr2 = std::to_array(arr1);

    std::cout << "std::to_array(arr1):\n";
    for (const auto& i : arr2)
    {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    // The size is 7 as it includes the null terminator
    std::array<char, 7> arr3 = std::to_array("string");

    std::cout << "\nstd::to_array(\"string\"):\n";
    for (const auto& i : arr3)
    {
        std::cout << i << " ";
    }
    std::cout << std::endl;
}
std::to_array(arr1):
1 2 3 

std::to_array("string"):
s t r i n g 

関連項目

<array>