C++ List::emplace() 函式



C++ 的 std::list::emplace() 函式用於在容器中 `pos` 位置(`pos` 是一個迭代器,新元素將在此之前構造)之前直接插入一個新元素。

使用內建函式 `begin()` 和 `end()`,您可以指定容器中元素的起始和結束位置,並使用 `emplace()` 函式插入元素。插入新元素後,列表大小將增加一。如果我們給出像 (0,1,2,3..n) 這樣的位置值,則會丟擲錯誤。

語法

以下是 C++ std::list::emplace() 函式的語法:

iterator emplace (const_iterator position, val);

引數

  • pos − 列表中插入新元素的位置。
  • val − 指定要插入到列表中的新元素值。

返回值

此函式返回一個指向新放置元素的隨機訪問迭代器。

示例 1

在列表的末尾(或最後一個位置)插入一個新元素。

在下面的程式中,我們使用 C++ std::list::emplace() 函式在指定位置(末尾)在當前列表 {10, 20, 30} 中插入一個新元素值 40。

#include<iostream>
#include<list>
using namespace std;

int main() {
   //create a list
   list<int> num_list = {10, 20, 30};
   cout<<"List elements before emplace operation: ";
   for(int n : num_list) {
      cout<<n<<" ";
   }
   //using emplace() function
   num_list.emplace(num_list.end(), 40);
   cout<<"\nList elements after emplace operation: ";
   for(int n : num_list) {
      cout<<n<<" ";
   }
   return 0;
}

輸出

這將生成以下輸出:

List elements before emplace operation: 10 20 30 
List elements after emplace operation: 10 20 30 40

示例 2

在列表的開頭(或第一個位置)插入一個新元素。

以下是 C++ std::list::emplace() 函式的另一個示例。在這裡,我們建立一個名為 symbols 的列表(型別為 char),其值為 {'@', '#', '$', '%' }。然後使用 emplace() 函式,我們嘗試在此列表的指定位置(開頭)插入一個新的 char 元素 '&'。

#include<iostream>
#include<list>
using namespace std;

int main() {
   //create a list
   list<char> symbols = {'@', '#', '$', '%'};
   cout<<"List elements before emplace operation: ";
   for(char n : symbols) {
      cout<<n<<" ";
   }
   //using emplace() function
   symbols.emplace(symbols.begin(), '&');
   cout<<"\nList elements after emplace operation: ";
   for(char n : symbols) {
      cout<<n<<" ";
   }
   return 0;
}

輸出

以下是上述程式的輸出:

List elements before emplace operation: @ # $ % 
List elements after emplace operation: & @ # $ %

示例 3

在空列表中插入元素。

在此示例中,我們建立一個名為 cities 的列表(型別為 string),其值為 {"Delhi", "Mumbai", "Hyderabad", "Lucknow"}。然後,使用 emplace() 函式,我們嘗試在此列表的指定位置(末尾)插入字串值 "Prayagraj"。

#include<iostream>
#include<list>
using namespace std;

int main() {
   //create a list
   list<string> cities  = {"Delhi", "Mumbai", "Hyderabad", "Lucknow"};
   cout<<"List elements before emplace operation: ";
   for(string c : cities) {
      cout<<c<<" ";
   }
   //using emplace() function
   cities.emplace(cities.end(), "Prayagraj");
   cout<<"\nList elements after emplace operation: ";
   for(string c : cities) {
      cout<<c<<" ";
   }
   return 0;
}

輸出

執行上述程式後,它將產生以下輸出:

List elements before emplace operation: Delhi Mumbai Hyderabad Lucknow 
List elements after emplace operation: Delhi Mumbai Hyderabad Lucknow Prayagraj

示例 4

動態地在列表中插入元素。

在下面的程式中,我們建立一個值為 {1,2,3} 的列表(型別為 int)。然後在 for 迴圈內使用 emplace() 函式在指定位置(末尾)動態地將元素插入當前列表。

#include<iostream>
#include<list>
using namespace std;

int main() {

   //create a list
   list<int> num_list = {1,2,3};
   cout<<"List elements before emplace operation: ";
   for(int n : num_list) {
      cout<<n<<" ";
   }
   //using for loop
   for(int i = 3; i<10; i++) {
      num_list.emplace(num_list.end(), i+1);
   }
   cout<<"\nList elements after emplace operation: ";
   for(int l : num_list) {
      cout<<l<<" ";
   }
   return 0;
}

輸出

上述程式生成以下輸出:

List elements before emplace operation: 1 2 3 
List elements after emplace operation: 1 2 3 4 5 6 7 8 9 10 
廣告
© . All rights reserved.