std::vector<T,Allocator>:: assign
|
void
assign
(
size_type count,
const
T
&
value
)
;
|
(1) | (C++20以降 constexpr) |
|
template
<
class
InputIt
>
void assign ( InputIt first, InputIt last ) ; |
(2) | (C++20以降 constexpr) |
|
void
assign
(
std::
initializer_list
<
T
>
ilist
)
;
|
(3) |
(C++11以降)
(C++20以降 constexpr) |
コンテナの内容を置き換えます。
[
first
,
last
)
内の要素のコピーで置き換えます。
|
このオーバーロードは、
|
(C++11以前) |
|
このオーバーロードは、
|
(C++11以降) |
すべてのイテレータ(
end()
イテレータを含む)および要素へのすべての参照が無効化されます。
目次 |
パラメータ
| count | - | コンテナの新しいサイズ |
| value | - | コンテナの要素を初期化する値 |
| first, last | - | コピーする要素のソース範囲を定義するイテレータのペア range |
| ilist | - | std::initializer_list から値をコピーする |
計算量
例
以下のコードは
assign
を使用して複数の文字を
std::
vector
<
char
>
に追加します:
#include <vector> #include <iostream> #include <string> int main() { std::vector<char> characters; auto print_vector = [&]() { for (char c : characters) std::cout << c << ' '; std::cout << '\n'; }; characters.assign(5, 'a'); print_vector(); const std::string extra(6, 'b'); characters.assign(extra.begin(), extra.end()); print_vector(); characters.assign({'C', '+', '+', '1', '1'}); print_vector(); }
出力:
a a a a a b b b b b b C + + 1 1
欠陥報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2209 | C++98 | 置換操作は既存の全要素の削除に続いて指定された要素の挿入として実装されることが要求されていた |
要求を
削除 |
関連項目
|
(C++23)
|
値の範囲をコンテナに割り当てる
(公開メンバ関数) |
|
値をコンテナに割り当てる
(公開メンバ関数) |