std::set::insert
函数原型:
single element (1) pair<iterator,bool> insert (const value_type& val);
pair<iterator,bool> insert (value_type&& val);
with hint (2) iterator insert (const_iterator position, const value_type& val);
iterator insert (const_iterator position, value_type&& val);
range (3) template <class InputIterator>
void insert (InputIterator first, InputIterator last);
initializer list (4) void insert (initializer_list<value_type> il);
插入元素
通过插入新元素来扩展容器,从而通过插入的元素数量有效地增加容器的大小。
因为集合中的元素是唯一的,所以插入操作将检查每个插入的元素是否等效于容器中已经存在的元素,如果是,则不插入该元素,并向该现有元素返回迭代器(如果该函数返回一个值 )。
有关允许重复元素的类似容器,请参见多集。
在内部,集合容器使所有元素按照其比较对象指定的条件进行排序。 始终按照此顺序将元素插入其各自的位置。
参数确定要插入多少个元素以及将它们初始化为哪些值:
参数:
val:
要复制(或移动)到插入元素的值。
成员类型value_type是容器中元素的类型,在set中定义为其第一个模板参数(T)的别名。
position:
请注意,这只是一个提示,并不强制将新元素插入到set容器内的该位置(集合中的元素始终遵循特定顺序)。
成员类型iterator和const_iterator在map中定义为指向元素的双向迭代器类型。
first,last:
指定元素范围的迭代器。 范围为[first,last)的元素副本插入到容器中。
请注意,范围包括first和last之间的所有元素,包括first指向的元素,但last指向的元素则不包括。
函数模板参数InputIterator应该是一个输入迭代器类型,该类型指向可以从其构造value_type对象的类型的元素。
il:
一个initializer_list对象。 插入这些元素的副本。
这些对象是根据初始值设定项列表声明符自动构造的。
成员类型value_type是容器中元素的类型,在set中定义为其第一个模板参数(T)的别名。
返回值:
单个元素版本(1)返回一个对,其成员pair :: first设置为一个迭代器,该迭代器指向新插入的元素或集合中已经存在的等效元素。 如果插入了新元素,则对中的pair :: second元素设置为true,如果已经存在等效元素,则设置为false。
带有提示(2)的版本将返回一个迭代器,该迭代器指向新插入的元素或集合中已经具有相同值的元素。
成员类型迭代器是指向元素的双向迭代器类型。
对是在中声明的类模板(请参见对)。
std::multiset::insert
函数原型:
single element (1) iterator insert (const value_type& val);
iterator insert (value_type&& val);
with hint (2) iterator insert (const_iterator position, const value_type& val);
iterator insert (const_iterator position, value_type&& val);
range (3) template <class InputIterator>
void insert (InputIterator first, InputIterator last);
initializer list (4) void insert (initializer_list<value_type> il);
插入元素
通过插入新元素来扩展容器,从而通过插入的元素数量有效地增加容器的大小。
在内部,多集容器按照其比较对象所指定的标准对所有元素进行排序。 始终按照此顺序将元素插入其各自的位置。
参数:
val:
要复制(或移动)到插入元素的值。
成员类型value_type是容器中元素的类型,在多集中定义为其第一个模板参数(T)的别名。
position:
请注意,这只是一个提示,并不强制将新元素插入多集容器内的该位置(多集中的元素始终遵循特定顺序)。
成员类型iterator和const_iterator在map中定义为指向元素的双向迭代器类型。
first,last:
指定元素范围的迭代器。 范围为[first,last)的元素副本插入到容器中。
请注意,范围包括first和last之间的所有元素,包括first指向的元素,但last指向的元素则不包括。
函数模板参数InputIterator应该是一个输入迭代器类型,该类型指向可以从其构造value_type对象的类型的元素。
il:
一个initializer_list对象。 插入这些元素的副本。
这些对象是根据初始值设定项列表声明符自动构造的。
成员类型value_type是容器中元素的类型,在多集中定义为其第一个模板参数(T)的别名。
返回值:
在返回值的版本中,这是一个指向多集中新插入元素的迭代器。
成员类型迭代器是指向元素的双向迭代器类型。
#include <iostream>
#include <set>
using namespace std;
void OutPut(set<int> &s)
{
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
cout<<" "<<*it<<", ";
cout<<endl;
}
void OutPutM(multiset<int> &s)
{
multiset<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
cout<<" "<<*it<<", ";
cout<<endl;
}
void main()
{
set<int>s1;
s1.insert(10);
s1.insert(15);
s1.insert(25);
s1.insert(20);
s1.insert(30);
s1.insert(33);
s1.insert(5);
s1.insert(20);
OutPut(s1);
multiset<int>sm1;
sm1.insert(10);
sm1.insert(15);
sm1.insert(25);
sm1.insert(20);
sm1.insert(30);
sm1.insert(33);
sm1.insert(5);
sm1.insert(20);
OutPutM(sm1);
}