C++ STL标准库:std::set std::multiset初始化、插入元素insert()的使用

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);
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值