最終更新日時(UTC): 2026年03月21日 14時12分53秒
Raclamusi が更新

履歴 編集

function
<deque>

# std::deque::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++26

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

    void
      assign(initializer_list<T> init);                // (3) C++11
    constexpr void
      assign(initializer_list<T> init);                // (3) C++26

## 概要

コンテナに値を代入する。

## 効果

- (1) : `*this`の全ての要素を解放し、イテレータ範囲`[first, last)`の要素のコピーを`*this`にコピーする。
- (2) : `*this`の全ての要素が解放され、`t`オブジェクトの`n`個のコピーから`*this`を再構築する。
- (3) : `*this`の全ての要素を解放し、`init`の全ての要素を`*this`にコピーする。

## 例

    #include <iostream>
    #include <deque>

    template <class T>
    void print(const char* name, const std::deque<T>& c)
    {
      std::cout << name << " : {";
      for (const T& x : c) {
        std::cout << x << " ";
      }
      std::cout << "}" << std::endl;
    }

    int main ()
    {
      std::deque<int> c = {1, 2, 3};

      // イテレータ範囲の代入
      std::deque<int> c1;
      c1.assign(c.begin(), c.end());

      // 値1を持つオブジェクト3個から再構築
      std::deque<int> c2;
      c2.assign(3, 1);

      // 初期化子リストの代入
      std::deque<int> c3;
      c3.assign({1, 2, 3});

      ::print("c1", c1);
      ::print("c2", c2);
      ::print("c3", c3);
    }

### 出力

    c1 : {1 2 3 }
    c2 : {1 1 1 }
    c3 : {1 2 3 }

## 参照

- N2679 Initializer Lists for Standard Containers(Revision 1)
- P3372R3 constexpr containers and adaptors