真爱无限的知识驿站

学习积累技术经验,提升自身能力

linux下练习 c++ 容器set、multimset的特性

print.h

//print.h
#include <iostream>
using namespace std;
#ifndef print_fun
#define print_fun
template<typename T>
///显示序列数据
void print(T b,T e,char c=' ')
{
bool isExit=false;
while (b!=e)
{
cout<<*b++<<c;
isExit=true;
}
if(isExit) cout<<endl;
}
template<typename K,typename V>
ostream& operator<<(ostream& o,const pair<K,V>& p)//重载输出map类型元素
{
return o<<p.first<<':'<<p.second;
}
#endif


set.cpp

/*
set特性
元素就是key=value
不允许重复
*/
#include<set>
#include<iostream>
using namespace std;
#include<string>
#include<fstream>
#include"print.h"
int main()
{
set<string> ss;//定义容器
string s;//
ifstream fin("maillist.txt");
if(!fin)
{
return 1;
}
while(fin>>s) ss.insert(s);
print(ss.begin(),ss.end());
}


结果:


multiset.cpp

/*
set特性
元素就是key=value
允许重复key
*/
#include<set>
#include<iostream>
using namespace std;
#include<string>
#include<fstream>
#include<map>
#include"print.h"
int main()
{
multiset<string> ms;
string s;
ifstream fin("maillist.txt");
if(!fin)
{
return 1;
}
while(fin>>s) ms.insert(s);
print(ms.begin(),ms.end());
multiset<string>::iterator ib=ms.begin(),ie;
multimap<int,string> mis;
while(ib!=ms.end())
{
mis.insert(make_pair(ms.count(*ib),*ib));//排好序的一段
ib=ms.upper_bound(*ib);
}
print(mis.begin(),mis.end());
return 0;
}


maillist.txt

ppp1@qq.com
ppp2@qq.com
ppp3@qq.com
ppp2@qq.com
ppp2@qq.com
ppp1@qq.com
ppp1@qq.com


结果:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright 2024-2027 pukuimin Rights Reserved.
粤ICP备17100155号