📅  最后修改于: 2020-10-19 07:50:07             🧑  作者: Mango
C++ Multiset insert()函数用于在多集中插入新元素或一系列元素。
single element (1) iterator insert (const value_type& val); //until C++ 11
with hint (2) iterator insert (iterator position, const value_type& val); //until C++ 11
range (3) template
void insert (InputIterator first, InputIterator last); //until C++ 11
single element (1) iterator insert (const value_type& val);
iterator insert (value_type&& val); //since C++ 11
with hint (2) iterator insert (const_iterator position, const value_type& val);
iterator insert (const_iterator position, value_type&& val); //since C++ 11
range (3) template
void insert (InputIterator first, InputIterator last); //since C++ 11
initializer list (4) void insert (initializer_list il); //since C++ 11
val:要插入多集的值。
position:提示在多元素集中插入元素的位置。
first:要插入值的范围的开始。
last:要插入值的范围的结尾。
il:初始化列表。
insert()函数返回一个迭代器,该迭代器指向多集中新插入的元素。
如果插入单个元素,则复杂度的大小将为对数。
如果给出提示,并且给出的位置是最佳位置,则复杂度将摊销为常数。
没有变化。
容器已修改。
同时访问multiset的现有元素是安全的,尽管容器中的迭代范围不是。
此函数不会引发异常。
让我们看一个简单的示例,将元素插入多集中:
#include
#include
using namespace std;
int main()
{
multiset s;
s.insert(1);
s.insert(4);
s.insert(2);
s.insert(3);
s.insert(3);
cout << "The elements in multiset are: ";
for (auto it = s.begin(); it != s.end(); it++)
cout << *it << " ";
return 0;
}
输出:
The elements in multiset are: 1 2 3 3 4
在上面的示例中,它只是使用给定的键插入元素。
让我们看一个简单的示例,将元素插入指定位置:
#include
#include
using namespace std;
int main()
{
multiset s;
// Function to insert elements
// in the multiset container
auto itr = s.insert(s.begin(), 1);
// the time taken to insertion
// is very less as the correct
// position for insertion is given
itr = s.insert(itr, 4);
itr = s.insert(itr, 2);
itr = s.insert(itr, 4);
itr = s.insert(itr, 3);
cout << "The elements in multiset are: ";
for (auto it = s.begin(); it != s.end(); it++)
cout << *it << " ";
return 0;
}
输出:
The elements in multiset are: 1 2 3 4 4
在上面的示例中,元素被插入到定义的位置。
让我们看一个简单的示例,在给定范围内将一个多重集的元素插入到另一个元素:
#include
# include
# include
using namespace std;
int main()
{
multiset s1;
// Function to insert elements
// in the multiset container
s1.insert(1);
s1.insert(4);
s1.insert(2);
s1.insert(4);
s1.insert(3);
cout << "The elements in multiset1 are: ";
for (auto it = s1.begin(); it != s1.end(); it++)
cout << *it << " ";
multiset s2;
// Function to insert one multiset to another
// all elements from where 3 is to end is
// inserted to multiset2
s2.insert(s1.find(3), s1.end());
cout << "\nThe elements in multiset2 are: ";
for (auto it = s2.begin(); it != s2.end(); it++)
cout << *it << " ";
return 0;
}
输出:
The elements in multiset1 are: 1 2 3 4 4
The elements in multiset2 are: 3 4 4
让我们看一个简单的示例,从初始化列表中插入元素:
#include
#include
using namespace std;
int main(void) {
multiset m = {"Java", "C++", "SQL"};
// Insert the elements from an initializer_list
m.insert({"C++", "Oracle"});
cout << "Multiset contains following elements" << endl;
for (auto it = m.begin(); it != m.end(); ++it)
cout << *it<< endl;
return 0;
}
输出:
Multiset contains following elements
C++
C++
Java
Oracle
SQL
在上面的示例中,元素是从初始化列表中插入的。