Practice3_vector_sort_struct.cpp

// Practice3_vector_sort_struct.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <vector>
#include <algorithm>
#include <iostream>
#include <ctime>
#include <stdio.h>
#include <string>

using namespace std;

struct ScoreStruct
{
std::string name;
unsigned int score;
bool operator <(const ScoreStruct &right) const
{
return score < right.score;
}
};

void initVector(vector<ScoreStruct> &vec, unsigned int size)
{
srand(unsigned(time(NULL)));
for(unsigned int i =0; i < size; i++)
{
char buff[32] = {0};
int randNum = rand()%100;
sprintf(buff, "%d", randNum);
ScoreStruct ss = {buff, randNum};
vec.push_back(ss);
}
}

void printVector(vector<ScoreStruct> vec)
{
vector<ScoreStruct>::iterator it = vec.begin();
for(; it != vec.end();++it)
{
/* 可以正常工作,<<前后一定要有空格!!!!*/
cout << it->name << "," << it->score << " ";// it->name即(*it).name的简写

/* 可以正常工作
cout<< it->name;
cout<< ",";
cout<<it->score;
cout<< " ";
*/

/* 可以正常工作
ScoreStruct ss = *it;
cout<<ss.name;
cout<<",";
cout<<ss.score;
cout<<" ";
*/
/* 不可以正常工作,为何? */
//printf("score: %d ", it->score);
//printf("name: %s ", it->name);
}
cout<<endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
vector<ScoreStruct> vect;
initVector(vect, 4);
cout<<"before sort"<<endl;
printVector(vect);
sort(vect.begin(), vect.end());
cout<<"after sort"<<endl;
printVector(vect);
return 0;
}

原文地址:https://www.cnblogs.com/liuzc/p/6476417.html