C/C++一个类类型的实例和排序输出的例子

// C++实例程序
// VC++ 6.0能编译通过并且正常运行
// 输出时,标记有黄色背景的是被排列项,以从小到大排序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <io.h>
#include <windows.h>

#include <iostream>
#include <fstream>
#include <sstream>
#include <strstream>

#include <algorithm>

#include <string>
#include <vector>
#include <map>

class census{

public:

std::string m_sCityName; //城市名
long int m_nCityPeople; //城市人口数量
double m_xCivilization; //城市人口文化水平

public:

void input(std::string s, long int n, double f)
{
m_sCityName = s;
m_nCityPeople = n;
m_xCivilization = f;
}

census(void){return;}
census(std::string s, long int n, double f)
{
input(s, n, f);
}

};

bool _sort_with_name(const census& x1, const census& x2) //城市名按城市的字母先后排序
{
return x1.m_sCityName < x2.m_sCityName;
}

bool _sort_with_people(const census& x1, const census& x2) //城市人口按数的大小排序
{
return x1.m_nCityPeople < x2.m_nCityPeople;
}

bool _sort_with_civilization(const census& x1, const census& x2) //城市人口文化水平按数的大小排序
{
return x1.m_xCivilization < x2.m_xCivilization;
}

int main()
{
std::vector<census> vCity; //数组

//装入数组
{
census x("北京", 1000, 0.99);
vCity.push_back(x);
}
{
census x("云南", 10000, 0.79);
vCity.push_back(x);
}
{
census x("四川", 5000, 0.80);
vCity.push_back(x);
}
{
census x("香港", 900, 0.99);
vCity.push_back(x);
}
{
census x("拉萨", 7000, 0.70);
vCity.push_back(x);
}

//排序
std::sort(vCity.begin(), vCity.end(), _sort_with_name);
//输出
std::cout << "Sort with name of city: " << std::endl << "=====================================" << std::endl;
std::cout << "Name\tPeople\tCivilization" << std::endl;
std::cout << "=====================================" << std::endl;
for(std::vector<census>::iterator it = vCity.begin(); it != vCity.end(); it++){
census x = *it;

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 224);
std::cout << x.m_sCityName;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 8);

std::cout << "\t" << x.m_nCityPeople << "\t" << x.m_xCivilization*100 << "%" << std::endl;
}
std::cout << "=====================================" << std::endl;

//排序
std::sort(vCity.begin(), vCity.end(), _sort_with_people);
//输出
std::cout << "Sort with quantity of people: " << std::endl << "=====================================" << std::endl;
std::cout << "Name\tPeople\tCivilization" << std::endl;
std::cout << "=====================================" << std::endl;
for(it = vCity.begin(); it != vCity.end(); it++){
census x = *it;

std::cout << x.m_sCityName << "\t";

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 224);
std::cout << x.m_nCityPeople;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 8);

std::cout << "\t" << x.m_xCivilization*100 << "%" << std::endl;
}
std::cout << "=====================================" << std::endl;

//排序
std::sort(vCity.begin(), vCity.end(), _sort_with_people);
//输出
std::cout << "Sort with civilization of people: " << std::endl << "=====================================" << std::endl;
std::cout << "Name\tPeople\tCivilization" << std::endl;
std::cout << "=====================================" << std::endl;
for(it = vCity.begin(); it != vCity.end(); it++){
census x = *it;

std::cout << x.m_sCityName << "\t" << x.m_nCityPeople << "\t";

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 224);
std::cout << x.m_xCivilization*100 << "%";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);

std::cout << std::endl;
}

system("PAUSE");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值