在这里我总结一下网上看来的方法,以map为例:
方法一:
#include <iostream>
#include <utility>
#include <string>
#include <map>
using namespace std;
bool my_compare(const string &str1, const string &str2)
{
return str1 > str2;
}
typedef bool (*comp)(const string &,const string &);
int main(int argc, char *argv[])
{
map<string, int, comp> my_map(my_compare);
my_map["wjj"] = 1;
my_map["lqm"] = 2;
my_map["mei"] = 3;
map<string, int,comp>::const_iterator itr = my_map.begin();
while ( itr != my_map.end()) {
cout << itr->first << " : " << itr->second << endl;
itr++;
}
return 0;
}
方法二:
#include <iostream>
#include <map>
#include <string>
using namespace std;
class key
{
public:
float eyesight;
float height;
key(float x, floaty):eyesight(x), height(y)
{
}
friend bool operator < (constkey&,const key&);
};
bool operator < (constkey& key1,const key& key2)
{
// 按eyesight升序 + height升序排列
if(key1.eyesight != key2.eyesight)
return (key1.eyesight < key2.eyesight);
else
return (key1.height < key2.height);
// 按eyesight降序 + height降序排列
//if(key1.eyesight != key2.eyesight)
// return(key1.eyesight > key2.eyesight);
//else
// return(key1.height > key2.height);
// 按eyesight升序 + height降序排列
//if(key1.eyesight != key2.eyesight)
// return(key1.eyesight < key2.eyesight);
//else
// return(key1.height > key2.height);
// 按eyesight降序 + height升序排列
//if(key1.eyesight != key2.eyesight)
// return(key1.eyesight > key2.eyesight);
//else
// return(key1.height < key2.height);
}
class Student
{
private:
int id; //学号
string name; // 姓名
float eyesight; //视力
float height; //身高
float chinese; //语文成绩
float english; //英文成绩
float math; //数学成绩
public:
Student(int id, string name,floateyesight,float height,float chinese,float english,float math)
{
this->id = id;
this->name = name;
this->eyesight = eyesight;
this->height = height;
this->chinese = chinese;
this->english = english;
this->math = math;
}
int get_id()
{
return id;
}
string get_name()
{
return name;
}
float get_eyesight()
{
return eyesight;
}
float get_height()
{
return height;
}
float get_chinese()
{
return chinese;
}
float get_english()
{
return english;
}
float get_math()
{
return math;
}
};
int main(int argc,char**argv)
{
map<key,Student> stu_map;
Studentstu4(4, "Dudley",1.1f, 170.2f, 90.5f, 89.5f, 93.0);
Studentstu3(3, "Chris", 1.1f, 163.4f, 93.5f,90.0f, 83.5f);
Studentstu2(2, "Bob", 1.5f, 166.6f, 86.0f,98.5f, 85.0f);
Studentstu1(1, "Andrew", 1.5f, 173.2f, 98.5f,100.0f, 100.f);
stu_map.insert(make_pair(key(stu4.get_eyesight(),stu4.get_height()), stu4));
stu_map.insert(make_pair(key(stu3.get_eyesight(),stu3.get_height()), stu3));
stu_map.insert(make_pair(key(stu2.get_eyesight(),stu2.get_height()), stu2));
stu_map.insert(make_pair(key(stu1.get_eyesight(),stu1.get_height()), stu1));
map<key,Student>::iterator iter;
for(iter = stu_map.begin(); iter != stu_map.end();++iter)
{
cout<< iter->first.eyesight << "\t"<< iter->first.height << "\t" << iter->second.get_id()<<"\t" <<iter->second.get_name() << endl;
}
return 0;
}
参考:http://blog.csdn.net/pathuang68/article/details/7526305
http://blog.csdn.net/challenge_c_plusplus/article/details/7429963
如果还有其他方法还请指教。
原文链接: https://www.cnblogs.com/wghost/archive/2012/06/14/2549165.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/52680
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!