最終更新日時:
が更新

履歴 編集

function
<vector>

std::vector::assign

template <class InputIterator>
void assign(InputIterator first, InputIterator last); // (1)

void assign(size_type n, const T& u);                 // (2)

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

概要

コンテナの再代入。

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

要件

  • (1) : 型T*firstからXに対してEmplaceConstructibleでなければならない。イテレーターがForward iterators の要件を満たさない場合、型TXに対してMoveInsertableでなければならない。[first, last)の範囲のそれぞれのイテレーターは1回だけ間接参照される。first, lastは自身のイテレーターであってはならない。
  • (2) : u*thisの要素への参照であってはならない。

効果

  • (1) : [first, last)の範囲の要素のコピーで*thisの要素を置き換える。
  • (2) : *thisの要素をすべてn個のuのコピーに置き換える。
  • (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

参照