在C ++ STL中设置emplace_hint()函数

在本文中,我们将讨论C ++ STL中的set::emplace_hint()函数,其语法,工作原理和返回值。

C ++ STL中的设置是什么?

C ++ STL中的集合是必须按常规顺序具有唯一元素的容器。集必须具有唯一元素,因为元素的值标识该元素。一旦在集合容器中添加了值,以后就无法修改,尽管我们仍然可以删除或将值添加到集合中。集用作二进制搜索树。

设置了什么:: emplace_hint()

emplace_hint()函数是C ++ STL中的内置函数,在头文件中定义。此函数将新元素插入具有位置的set容器中。在emplace_hint()中,我们为元素传递一个位置,该位置充当提示。当且仅当没有其他值等于要插入的值时,才插入元素。该函数从提示位置搜索并找到要放置元素的位置。

语法

Set1.emplace_hint(iterator position, const type_t& value);

参数

此函数接受两个参数,一个用于提示位置,第二个是要放置的元素。

位置-这是提示位置,从该位置开始搜索即可找到要放置的值的位置。该位置恰好使该功能的工作更快,但该功能并未指定要放置的元素的确切位置。

-我们必须实现的实际值。

返回值

如果成功插入元素,则此函数将迭代器返回到新插入的元素。

示例

Input: set mySet;
mySet.emplace_hint(mySet.begin(), 0);
mySet.emplace_hint(i, 1);
mySet.emplace_hint(i, 2);
mySet.emplace_hint(i, 1);
Output: Elements are : 0 1 2

示例

#include <bits/stdc++.h>
using namespace std;
int main(){
   set<int> mySet;
   auto i = mySet.emplace_hint(mySet.begin(), 0);
   i = mySet.emplace_hint(i, 1);
   mySet.emplace_hint(i, 2);
   mySet.emplace_hint(i, 1);
   cout<<"elements are : ";
   for (auto i = mySet.begin(); i != mySet.end(); i++)
      cout << *i<< " ";
   return 0;
}

输出结果

如果我们运行上面的代码,那么它将生成以下输出-

Elements are : 0 1 2

示例

#include <iostream>
#include <set>
#include <string>
int main (){
   std::set<std::string> mySet;
   auto i = mySet.cbegin();
   mySet.emplace_hint (i,"best");
   i = mySet.emplace_hint (mySet.cend(),"point");
   i = mySet.emplace_hint (i,"is the");
   i = mySet.emplace_hint (i,"tutorials");
   std::cout<<"string is : ";
   for(const std::string& str: mySet)
      std::cout << ' ' << str;
   std::cout << '\n';
   return 0;
}

输出结果

如果我们运行上面的代码,那么它将生成以下输出-

String is : best is the point tutorials