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 
广告