set和map常用接口

目录

Set的常用的接口是:

insert

erase

find

count

Map的常见接口:

构造函数

操作符 [ ]    是map特有的,set不具有[ ]功能。

Insert 

Erase

Find

Count


set和map是常见的关联式容器。

Set的常用的接口是:

insert

三种常见用法:
pair<iterator,bool> insert (const value_type& val);
iterator insert (iterator position, const value_type& val);
template <class InputIterator>  void insert (InputIterator first, InputIterator last);
举个例子:
1.
	set<int> s;
	s.insert(1);
	s.insert(2);
	s.insert(3);
2.
	auto ret = s.insert(2);  ret是一个pair<iterator,bool>类型,
	iterator的位置是,如果这个值已经存在了,则bool为false,
	s.insert(ret.first, 4);
	s.insert(ret.first, 5);
3.
	int myints[] = { 20,30,10 };
	vector<int> v = { 50,60,70 };
	s.insert(myints, myints + 3); 通过区间插入
	s.insert(v.begin(), v.end());
	for (auto e : s)
	{
		cout << e << endl;
	}

erase

三种常见用法:
    void erase (iterator position);
    size_type erase (const value_type& val);
    void erase (iterator first, iterator last);
1.
    auto e = s.begin();
	e++;
	s.erase(e);
2.
	s.erase(3);
	s.erase(2);
3.
	s.erase(s.begin(), s.end()--);
	for (auto e : s)
	{
		cout << e << endl;
	}

如果是通过值删除,如果这个值不存在,则返回0,否则返回1.

find

iterator find (const value_type& val) const;

如果能够找到,则返回当前值的迭代器,否则返回end()。

count

size_type count (const value_type& val) const;

如果能够找到这个值,则返回1,否则返回0.

Map的常见接口:

构造函数

map<string, int> dict = { {"草莓",1},{"香蕉",2},{"橘子",3}};
map<string, int> dict1(dict.begin(), dict.end());

操作符 [ ]    是map特有的,set不具有[ ]功能。

mapped_type& operator[] (const key_type& k);
[]是可以理解为获得元素的second。
举个例子:
map<string, int> dict = { {"草莓",1},{"香蕉",2},{"橘子",3}};
cout << "草莓: "<<dict["草莓"] << endl;

 [ ]用于计数是十分方便的。

map<string, int> dict;
	string arr[] = { "草莓","草莓","香蕉","香蕉" };
	for (auto e : arr)
	{
		dict[e]++;   dict[e] 可以直接指向其second的值
	}
	for (auto e : dict)
	{
		cout << e.first << ":" << e.second << endl;
	}

Insert 

pair<iterator,bool> insert (const value_type& val);
直接插入某个值.
void insert (InputIterator first, InputIterator last);
通过迭代器插入
iterator insert (iterator position, const value_type& val);
在指定迭代器位置插入
map<string, int> dict;
1.
dict.insert(make_pair("hello",1));

map<string, int> dict1;
2.
dict1.insert(dict.begin(), dict.end());

3.
dict1.insert(dict1.begin()++, make_pair("hello", 1));

Erase

void erase (iterator position);
删除指定迭代器的值
size_type erase (const key_type& k);
删除指定的值
void erase (iterator first, iterator last);
删除迭代器区间的值
举个例子:
map<string, int> dict;
string arr[] = { "草莓","草莓","香蕉","香蕉" };
for (auto e : arr)
{
	dict[e]++;
}

1.
dict.erase(dict.begin());

2.
cout << dict.erase("草莓") << endl;
如果值能够成功删除,则返回1,否则返回0
cout << dict.erase("柚子") << endl;

3.
dict.erase(dict.begin(), dict.end());

Find

iterator find (const key_type& k);
const_iterator find (const key_type& k) const;

其返回的迭代器的解引用是 一个pair<>类型的。
如果能够找到其值,则返回这个值的迭代器。
如果不能找到则返回 end
map<string, int> dict;
string arr[] = { "草莓","草莓","香蕉","香蕉" };
for (auto e : arr)
{
	dict[e]++;
}
auto e = dict.find("香蕉");
	cout<<(*e).first;

Count

size_type count (const key_type& k) const;
由于set和map都有去重的功能,所以count功能只能用于检测 k是否存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值