说起map和set,想必我们都学过红黑树了吧,map和set就是红黑树的一个应用领域。它的底层就是由红黑树来实现的。下面简单说一下map和set的使用吧。
首先,有一个栗子是这样的,让我们统计出每种水果出现的次数。
我们会想到怎么解决的。关于map,我们知道,当你插入同样的key值时,它就不会将要插入的key值插入到map中。但是,我们还知道,map是有俩个参数的,一个是插入的key值,另一个value可以用来统计key值出现的次数。
关于统计水果次数的问题,我们主要有以下几种方法:
map<string,int> countMap;
string strs[] = {
"苹果","香蕉","橘子","苹果","苹果","香蕉"};
for(int i = 0; i < sizeof(strs)/sizeof(strs[0]); i++)
{
map<string,int>::iterator it = countMap.find(strs[i]);
if(it != countMap.end())
{
it->second++;
}
else
{
countMap.insert(make_pair(strs[i],1));
}
}
map<string,int>::iterator it1 = countMap.begin();
while(it1 != countMap.end())
{
cout<<it1->first<<":"<<it1->second<<endl;
++it1;
}
pair<map<string,int>::iterator,bool> ret;
for(int i = 0; i < sizeof(strs)/sizeof(strs[0]);i++)
{
ret = countMap.insert(make_pair(strs[i],1));
if(ret.second == false)
ret.first->second++;
}