//set
#include<iostream>
#include<iterator>
#include<set>
#include<utility>
using namespace std;
int main(){
set<double> s;
pair<set<double>::iterator,bool> r;
//输入集合中元素
while(true){
double v;
cin>>v;
if(v==0) break;
r=s.insert(v);//插入成功 第一个元素为插入位置 第二个为true 否则为false
if(!r.second)//第二个元素
cout<<v<<" is duplicated\n";
}
set<double>::iterator iter1=s.begin();
set<double>::iterator iter2=s.end();
double medium =(*iter1+*(--iter2))/2;
cout<<"medium:"<<medium<<endl;
cout<<"<=medium:";
copy(s.begin(),s.upper_bound(medium),ostream_iterator<double>(cout," "));
cout<<endl;
cout<<">=medium";
copy(s.lower_bound(medium),s.end(),ostream_iterator<double>(cout," "));
cout<<endl;
return 0;
}
/*
1 2.5 4 5 3.5 5 7 8 2.5 0
5 is duplicated
2.5 is duplicated
medium:4.5
<=medium:1 2.5 3.5 4
>=medium5 7 8
*/
//map
#include<iostream>
#include<map>
#include<string>
#include<utility>
using namespace std;
int main(){
map<string,int> courses;
map<string,int>::iterator iter;
string name;
courses.insert(make_pair("CSAPP",3));
courses.insert(make_pair("C++",2));
courses.insert(make_pair("CSARCH",4));
courses.insert(make_pair("COMPILER",4));
courses.insert(make_pair("OS",5));
int n=3;
int sum=0;
//选3门课并计算学分
while(n>0){
cin>>name;
iter=courses.find(name);
if(iter==courses.end())
cout<<name<<" is not available\n";
else{
sum+=iter->second;
courses.erase(iter);
n--;
}
}
cout<<"Total credit:"<<sum<<endl;
return 0;
}
#include<iostream>
#include<map>
#include<string>
#include<utility>
using namespace std;
int main(){
multimap<string,string> courses;
typedef multimap<string,string>::iterator Courselter;
courses.insert(make_pair("C++","2-6"));
courses.insert(make_pair("COMPILER","3-1"));
courses.insert(make_pair("COMPILER","5-2"));
courses.insert(make_pair("OS","1-2"));
courses.insert(make_pair("OS","4-1"));
courses.insert(make_pair("OS","5-5"));
//输入课程名,输出每周上课次数与时间
string name;
int count;
do{
cin>>name;
count=courses.count(name);
if(count==0)
cout<<"Cannot find this course!\n";
}while(count==0);
cout<<count<<" lesson(s) per week: ";
pair<Courselter,Courselter> range;
range=courses.equal_range(name);//range.first指向第一个符合条件的位置 second指向最后一个符合条件的下一个位置
for(Courselter iter = range.first;iter !=range.second;++iter)
cout<<iter->second<<" ";
cout<<endl;
return 0;
}