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 の要件を満たさない場合、型T
はX
に対して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