function
<deque>
std::deque::insert
iterator
insert(iterator position,
const T& x); // (1) C++03
iterator
insert(const_iterator position,
const T& x); // (1) C++11
constexpr iterator
insert(const_iterator position,
const T& x); // (1) C++26
iterator
insert(const_iterator position,
T&& y); // (2) C++11
constexpr iterator
insert(const_iterator position,
T&& y); // (2) C++26
void
insert(iterator position,
size_type n,
const T& x); // (3) C++03
iterator
insert(const_iterator position,
size_type n,
const T& x); // (3) C++11
constexpr iterator
insert(const_iterator position,
size_type n,
const T& x); // (3) C++26
template <class InputIterator>
void
insert(iterator position,
InputIterator first,
InputIterator last); // (4) C++03
template <class InputIterator>
iterator
insert(const_iterator position,
InputIterator first,
InputIterator last); // (4) C++11
template <class InputIterator>
constexpr iterator
insert(const_iterator position,
InputIterator first,
InputIterator last); // (4) C++26
iterator
insert(const_iterator position,
initializer_list<T> init); // (5) C++11
constexpr iterator
insert(const_iterator position,
initializer_list<T> init); // (5) C++26
概要
任意の位置に要素を挿入する。
この関数は、positionで指定した場所の前に新しい要素を挿入することにより、dequeコンテナを拡張する。
これは挿入される要素の分だけコンテナのサイズを増加させ、それより前に取得された全てのイテレータを無効化する。しかし、先頭または終端への挿入の場合は、参照は有効なままとなる。
二重終端キューは、シーケンスの終端または先頭への挿入(もしくは削除)が効率的なパフォーマンスとなるよう、設計されている。他の場所への挿入は通常、listコンテナよりも効率の面で劣る。
追加される要素の数、及びそれぞれの初期値は引数によって決定づけられる。
引数
position新しい要素を挿入するコンテナ内の場所。iteratorはメンバ型であり、ランダムアクセスイテレータとして定義される。x挿入される要素の初期化に使われる値。Tはひとつめのテンプレートパラメータ(コンテナに格納される要素の型)である。y直接挿入される値。Tはひとつめのテンプレートパラメータ(コンテナに格納される要素の型)である。n挿入する要素の数。それぞれの要素は x の値によって初期化される。メンバ型size_typeは符号なし整数型である。first, last要素のイテレータ範囲を指定する。イテレータ範囲[first, last)の中にある要素のコピーが位置positionに挿入される。firstとlastの間の範囲は、firstで指定された要素を含むが、lastで指定された要素を含まない点に注意。テンプレート型はどんな入力イテレータでも構わない。
戻り値
- C++03まで一番上のバージョンのみ、新しい要素が挿入された場所を指すイテレータを返す。
- C++11以降新しい要素が挿入された場所を示すイテレータ。
計算量
挿入する要素の数に対して線形時間(コピー・ムーブコンストラクタの呼び出し)。加えて、positionとdeque終端との間の要素の数に対して、ライブラリの実装依存で線形時間で増加する。
備考
- 条件付きで、例外が発生した場合に副作用が発生しない保証がある。
例
#include <iostream>
#include <deque>
int main()
{
std::deque<int> c = {2, 3, 4};
// 先頭に1を挿入
c.insert(c.begin(), 1);
for (int x : c) {
std::cout << x << std::endl;
}
}
出力
1
2
3
4
関連項目
| 名前 | 説明 |
|---|---|
emplace |
任意の位置に要素を直接構築で挿入する |