- deque[meta header]
- std[meta namespace]
- deque[meta class]
- function template[meta id-type]
- cpp11[meta cpp]
template <class... Args>
void emplace_back(Args&&... args); // C++14 まで
template <class... Args>
reference emplace_back(Args&&... args); // C++17 から
直接構築で新たな要素を末尾に追加する。
この関数の引数 args...
は、要素型 value_type
のコンストラクタ引数である。当関数の内部で要素型 value_type
のコンストラクタを呼び出し、追加する要素を構築する。
value_type
は、コンテナに対してargs
から直接構築可能であること
- C++14 まで:なし
- C++17 から:構築した要素への参照
定数時間
- この関数の呼び出し後、全てのイテレータは無効化されるが、参照は無効化されない。
- 操作中に例外が発生した場合、副作用は発生しない。
#include <iostream>
#include <deque>
#include <utility>
#include <string>
int main()
{
std::deque<std::pair<int, std::string>> c;
c.emplace_back(3, std::string("hello"));
c.push_back(std::make_pair(1, std::string("world")));
for (const auto& x : c) {
std::cout << x.first << ',' << x.second << std::endl;
}
}
- emplace_back[color ff0000]
- c.push_back[link push_back.md]
3,hello
1,world
- C++11
- Clang: ??
- GCC: 4.7.0 [mark verified]
- ICC: ??
- Visual C++: 2012 [mark verified], 2013 [mark verified]
- 2010にも
emplace_back
は存在するが、push_back
相当の機能しかない。
- 2010にも
名前 | 説明 |
---|---|
emplace_front |
先頭に要素を直接構築で追加する |
push_front |
先頭に要素を追加する |
push_back |
末尾に要素を追加する |
insert |
任意の位置に要素を追加する |