STL中的关联式容器的共性

15 篇文章 0 订阅


1、

代码如下:

/*
 * multiset_1.cpp
 *
 *  Created on: 2013年8月6日
 *      Author: Administrator
 */

#include <iostream>
#include <set>
using namespace std;

template<typename T>
void print(T b, T e, char c = ' ') {
	while (b != e) {
		cout << *b++ << c;
	}
}

struct Person {
	string name;
	int age;
public:
	Person(string n, int a) :
			name(n), age(a) {

	}
};

bool operator<(const Person& a, const Person& b) {
	return a.age < b.age;
}

ostream& operator<<(ostream& o, const Person& x) {
	return o << x.name << ':' << x.age;
}

int main() {
	multiset<Person> mp;
	mp.insert(Person("liuyifei", 21));
	mp.insert(Person("刘亦菲", 18));
	mp.insert(Person("liushishi", 19));
	mp.insert(Person("liuyifei", 21));
	mp.insert(Person("liuyifei", 21));
	mp.insert(Person("刘诗诗", 22));
	mp.insert(Person("刘亦菲", 18));
	mp.insert(Person("liushishi", 19));
	mp.insert(Person("allen", 21));
	mp.insert(Person("liuyifei", 21));
	mp.insert(Person("刘亦菲", 18));
	mp.insert(Person("刘诗诗", 22));
	mp.insert(Person("刘亦菲", 18));
	mp.insert(Person("liushishi", 19));
	print(mp.begin(), mp.end());

	multiset<Person>::iterator it = mp.find(Person("allen", 21));
	if (it == mp.end()) {
		cout << "没有找到allen" << endl;
	} else {
		cout << "发现目标:" << *it << endl;
	}

	it = mp.find(Person("章泽天", 21));
	if (it == mp.end()) {
		cout << "没有找到章泽天" << endl;
	} else {
		cout << "发现目标:" << *it << endl;
	}

	it = mp.find(Person("刘诗诗", 18));
	cout << mp.count(*it) << "个" << *it << endl;

	it = mp.find(Person("liushishi", 19));
	cout << mp.count(*it) << "个" << *it << endl;

	multiset<Person>::iterator ib,ie;
	ib = mp.lower_bound(Person("liuyifei",21));
	ie = mp.upper_bound(Person("liuyifei",21));
	cout<<"============================="<<endl;
	print(ib,ie);
	cout<<"============================="<<endl;
	pair<multiset<Person>::iterator,multiset<Person>::iterator  > p = mp.equal_range(Person("刘亦菲",21));
	print(p.first,p.second);
	typedef multiset<Person>::iterator Iter;
	pair<Iter,Iter> q = mp.equal_range(Person("liushishi",18));
	print(q.first,q.second);
	cout<<"========================"<<endl;
	mp.erase(Person("liuyifei",21));
	mp.erase(Person("刘诗诗",22));
	print(mp.begin(),mp.end());

}


3、结果如下:


刘亦菲:18 刘亦菲:18 刘亦菲:18 刘亦菲:18 liushishi:19 liushishi:19 liushishi:19 liuyifei:21 liuyifei:21 liuyifei:21 allen:21 liuyifei:21 刘诗诗:22 刘诗诗:22 发现目标:liuyifei:21
发现目标:liuyifei:21
4个刘亦菲:18
3个liushishi:19
=============================
liuyifei:21 liuyifei:21 liuyifei:21 allen:21 liuyifei:21 =============================
liuyifei:21 liuyifei:21 liuyifei:21 allen:21 liuyifei:21 刘亦菲:18 刘亦菲:18 刘亦菲:18 刘亦菲:18 ========================
刘亦菲:18 刘亦菲:18 刘亦菲:18 刘亦菲:18 liushishi:19 liushishi:19 liushishi:19 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帅气的东哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值