public member function
<deque>
std::deque::emplace
template <class... Args> iterator emplace (const_iterator position, Args&&... args);
Construct and insert element
引數
- position
- 新元素插入到容器中的位置。
成員型別const_iterator是一種指向常量元素的 隨機訪問迭代器 型別。
- args
- 轉發給構造新元素的引數。
返回值
指向新插入元素的迭代器。
成員型別iterator是一種指向元素的 隨機訪問迭代器 型別。
新元素的儲存使用allocator_traits<allocator_type>::construct()分配,這在失敗時可能會丟擲異常(對於預設的 allocator,bad_alloc如果分配請求不成功,則丟擲)。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
// deque::emplace
#include <iostream>
#include <deque>
int main ()
{
std::deque<int> mydeque = {10,20,30};
auto it = mydeque.emplace ( mydeque.begin()+1, 100 );
mydeque.emplace ( it, 200 );
mydeque.emplace ( mydeque.end(), 300 );
std::cout << "mydeque contains:";
for (auto& x: mydeque)
std::cout << ' ' << x;
std::cout << '\n';
return 0;
}
|
輸出
mydeque contains: 10 200 100 20 30 300
|
複雜度
根據具體的庫實現,可能與 position 和 deque 的某個末尾之間的元素數量呈線性關係。
迭代器有效性
如果插入發生在序列的開頭或結尾,所有與此容器相關的迭代器都會失效,但指標和引用保持有效,指向呼叫前它們所指向的相同元素。
如果插入發生在 deque 的任何其他位置,所有與此容器相關的迭代器、指標和引用都會失效。
資料競爭
容器被修改。
如果插入發生在序列的開頭或結尾,則不會訪問任何包含的元素(但請參閱上面的“迭代器有效性”)。
如果發生在其他任何地方,則併發訪問元素不安全。