#include<iostream>//c++中标准的输入和输出流
using namespace std;//引用标准的名空间std
#include<map>//引用map容器必须要包含map容器的头文件
void printmap(map<int, int>& m)//打印输出map容器内所有元素
{//for循环第一个参数是找到起始迭代器的位置
// //第二个参数是 for循环退出的条件,
// //d.end()指向的是终止迭代器的下一个位置,
//那么退出的条件该迭代器已经到了终止迭代器的位置了
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
{
cout << (*it).first <<"\t"<< (*it).second << endl;
}
cout << endl;//在容器所有的元素都打印完之后,打印一个换行
}
void test01()
{
map<int, int>m;
m.insert(make_pair(10, 20));
m.insert(make_pair(30, 20));
m.insert(make_pair(20, 20));
m.insert(make_pair(400, 900));
//注意查找返回的时一个迭代器
//但是统计返回的是一个整型的数
printmap(m);
map<int, int>:: iterator pos = m.find(30);
if (pos != m.end())
//通过返回的迭代器的位置是否在结束迭代器的位置来判断是否找到该元素
//如果返回的迭代器的位置已经到了终止迭代器的下一个位置,说明没有找到
{
cout << "找到了" << endl;
}
else
{
cout << "没有找到" << endl;
}
int num = m.count(10);//查找在map容器内键值为10的元素的个数
//结果为只有一个:因为在map容器内是不允许有相同的键值的元素的,
//重复的元素在插入时就不能成功的插入进去
cout << "num=" << num << endl;//打印输出该个数
}
void test02()
{//对于multimap而言,可以有键值相同的元素
multimap<int, int>m;
m.insert(make_pair(201, 190));
m.insert(make_pair(223, 120));
m.insert(make_pair(23, 1340));
m.insert(make_pair(211, 2390));
m.insert(make_pair(211, 2390));
m.insert(make_pair(211, 2390));//map容器在插入时必须是一个队组
int num = m.count(211);//3个
cout << "num=" << num << endl;
}
int main(void)
{
test01();//map容器的查找和统计
test02();//multimap容器的查找和统计
system("pause");
//system("pause")和system("pause")作用和效果一样,因为dos命令是不区分大小写的。
//该语句是暂停的意思:等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果
return 0;//程序正常运行返回一个0
}
map容器的查找和统计及multimap容器的查找和统计 c++ 简单易懂
最新推荐文章于 2024-03-24 23:46:23 发布