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

履歴 編集

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からXに対してEmplaceConstructibleでなければならない。イテレータがForward iterators の要件を満たさない場合、型TXに対してMoveInsertableでなければならない。[first, last)の範囲のそれぞれのイテレータは1回だけ間接参照される。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

参照