最終更新日時: 2026年05月04日 11時24分57秒 (JST)
suomesta が更新

履歴 編集

function
<vector>

# std::vector::assign

    template <class InputIterator>
    void assign(InputIterator first, InputIterator last);           // (1) C++03
    template <class InputIterator>
    constexpr void assign(InputIterator first, InputIterator last); // (1) C++20

    void assign(size_type n, const T& t);           // (2) C++03
    constexpr void assign(size_type n, const T& t); // (2) C++20

    void assign(initializer_list<T> il);           // (3) C++11
    constexpr void assign(initializer_list<T> il); // (3) C++20

## 概要

コンテナの再代入。

- (1) : 範囲を代入。
- (2) : `n`個の値`t`を代入。
- (3) : 初期化子リストを代入。

## 要件

- (1) : 型`T`が`*first`から`vector`コンテナへの`EmplaceConstructible`であること。`InputIterator`が前方向イテレータの要件を満たさない場合、型`T`は`vector`コンテナに対してMoveInsertableであること。`[first, last)`の範囲のそれぞれのイテレータは１回だけ間接参照される。`first`, `last`は自身のイテレータであってはならない。
- (2) : `t`は`*this`の要素への参照であってはならない。

## 効果

- (1) : イテレータ範囲`[first, last)`の要素のコピーで`*this`の要素を置き換える。
- (2) : `*this`の要素をすべて`n`個の`t`のコピーに置き換える。
- (3) : `assign(il.begin(), il.end())`と等価。

## 戻り値

なし

## 例

    #include <array>
    #include <vector>
    #include <iostream>

    int main()
    {
      std::cout << "Constructor with initializer-list example:" << std::endl;
      std::vector<int> a = {1, 2, 3, 4};
      for (int i : a)
        std::cout << i << std::endl;
      std::cout << std::endl;

      std::cout << "a.assign(first, last) example:" << std::endl;
      const std::array<int, 4> data = {4, 3, 2, 1};
      a.assign(data.begin(), data.end());
      for (int i : a)
        std::cout << i << std::endl;
      std::cout << std::endl;

      std::cout << "a.assign(il) example:" << std::endl;
      a.assign({2,4,6,8});
      for (int i : a)
        std::cout << i << std::endl;
      std::cout << std::endl;

      return 0;
    }

### 出力

    Constructor with initializer-list example:
    1
    2
    3
    4

    a.assign(first, last) example:
    4
    3
    2
    1

    a.assign(il) example:
    2
    4
    6
    8

## 参照

- N2679 Initializer Lists for Standard Containers(Revision 1)
- P1004R2 Making `std::vector` constexpr