您的位置:首页 > 其它

第12章 multiset多重集合容器

2014-11-20 19:40 337 查看
/*

第12章 multiset多重集合容器
12.1 multiset技术原理
12.2 multiset应用基础
12.3 本章小结

*/

//  第12章 multiset多重集合容器
//   12.1 multiset技术原理 ----------------------------------------------------------------------------

//   12.2 multiset应用基础 ----------------------------------------------------------------------------

// 192 遍历
#include <set>
#include <iostream>
int main(void)
{
using namespace std;
multiset < int > ms;
ms.insert(10);
ms.insert(13);
ms.insert(11);
ms.insert(19);
ms.insert(13);
ms.insert(19);
ms.insert(19);
//打印数据
multiset < int > ::iterator i, iend;
iend = ms.end();
for(i = ms.begin(); i != iend; i++)
//打印出10 11 13 13 19 19 19
cout <<  *i << ' ';
cout << endl;
return 0;
}

// 193, 反向遍历
#include <set>
#include <iostream>
int main(void)
{
using namespace std;
multiset < int > ms;
ms.insert(10);
ms.insert(13);
ms.insert(11);
ms.insert(19);
ms.insert(13);
ms.insert(19);
ms.insert(19);
//反向遍历打印
multiset < int > ::reverse_iterator ri, riend;
riend = ms.rend();
for(ri = ms.rbegin(); ri != riend; ri++)
//打印出10 11 13 13 19 19 19
cout <<  *ri << ' ';
cout << endl;
return 0;
}

// 194 , 要从树的角度去看,相同值的元素在一起的,所以范围容易找
#include <set>
#include <iostream>
int main(void)
{
using namespace std;
multiset < int > ms;
ms.insert(10);
ms.insert(13); //
ms.insert(11);
ms.insert(19);
ms.insert(13); //
ms.insert(16);
ms.insert(13); //
ms.insert(17);
//find搜索元素13
int v = 19;
multiset < int > ::iterator i_v = ms.find(v);
cout <<  *i_v << endl;
//equal_range搜索元素13
v = 13;
pair < multiset < int > ::iterator, multiset < int > ::iterator > p =
ms.equal_range(v);
cout << "大于等于" << v << "的第一个元素为(x≥k)为 " <<  *p.first << endl;
cout << "大于" << v << "的第一个元素(x>k)为 " <<  *p.second << endl;
//打印重复键值元素13
multiset < int > ::iterator i;
cout << "键值为" << v << "的所有元素为 ";
for(i = p.first; i != p.second; i++)
//打印出13 13 13
cout <<  *i << ' ';
cout << "\n\n\n";
return 0;
}

//196
#include <set>
#include <iostream>
//学生结构体
struct Student
{
char *name;
int year;
char *addr;
};
//比较函数
struct StudentLess
{
bool operator()(const Student &s1, const Student &s2)const
{
return s1.year < s2.year; //比较学生年龄
}
};
int main(void)
{
using namespace std;
//学生数据
Student stuArray[] = {
{ "李强", 21, "北京" },
{ "王文", 22, "浙江" },
{ "张天", 21, "上海" },
{ "丁宏", 23, "深圳" },
{ "赵庆", 30, "天津" }
};
//创建multiset对象ms
multiset < Student, StudentLess > ms(stuArray, stuArray + 5, StudentLess());
//统计
cout << "学生人数: " << ms.size() << endl << endl;
cout << "年龄为21岁的学生人数: " << ms.count(stuArray[0]) << endl << endl;
//打印元素
multiset < Student > ::iterator i, iend;
iend = ms.end();
cout << "姓名    " << "年龄    " << "地址\n";
for(i = ms.begin(); i != iend; i++)
cout << (*i).name << '    ' << (*i).year << '    ' << (*i).addr << endl;
cout << endl;
return 0;
}

//   12.3 本章小结 ----------------------------------------------------------------------------


[b]TOP[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: