multiset emplace_hint() 函数在 C++ STL 中的应用
multiset::emplace_hint() 是一个 C++ STL 中的内置函数,它可在 multiset 中插入一个新元素。函数的参数传入了一个位置,该位置将作为提示,指示插入元素前搜索操作开始的位置。该位置仅有助于加快过程,但并不决定新元素插入的位置。新元素被插入后,只会按照 multiset 容器的属性来排序。
语法:
multiset_name.emplace_hint(iterator position, value)
参数:
- position: 要插入元素的位置,将作为提示指示在其当前位置插入元素之前进行搜索操作。该位置仅有助于加快过程,但并不决定新元素插入的位置。新元素被插入后,只会按照 multiset 容器的属性来排序。
- value: 要插入 multiset 容器的元素。
返回值: 返回一个迭代器,指向插入完成的位置。
下面的程序说明了上述功能。
程序 1:
// CPP program to demonstrate the
// multiset::emplace_hint() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
multiset<int> s;
auto it = s.emplace_hint(s.begin(), 1);
// stores the position of 2's insertion
it = s.emplace_hint(it, 2);
// fast step as it directly
// starts the search step from
// position where 2 was last inserted
s.emplace_hint(it, 4);
// this is a slower step as
// it starts checking from the
// position where 4 was inserted
// but 3 is to be inserted before 4
s.emplace_hint(it, 3);
// prints the multiset elements
for (auto it = s.begin(); it != s.end(); it++)
cout << *it << " ";
return 0;
}
1 2 3 4
程序 2:
// CPP program to demonstrate the
// multiset::emplace_hint() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
multiset<int> s;
auto it = s.emplace_hint(s.begin(), 1);
// stores the position of 2's insertion
it = s.emplace_hint(it, 2);
// fast step as it directly
// starts the search step from
// position where 2 was last inserted
s.emplace_hint(it, 4);
// this is a slower step as
// it starts checking from the
// position where 4 was inserted
// but 3 is to be inserted before 4
s.emplace_hint(it, 3);
// slower steps
s.emplace_hint(s.begin(), 6);
s.emplace_hint(s.begin(), 6);
s.emplace_hint(s.begin(), 6);
s.emplace_hint(s.begin(), 6);
// prints the multiset elements
for (auto it = s.begin(); it != s.end(); it++)
cout << *it << " ";
return 0;
}
1 2 3 4 6 6 6 6