码迷,mamicode.com
首页 > 编程语言 > 详细

C++ list结构体变量排序

时间:2018-08-11 01:43:54      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:调用   成员   itoa   def   for   string   声明   自我   函数调用   

以下内容是自己整理的根据结构体里面的不同变量,对list排序的实例,若有问题可以留言。仅供参考。

#include <iostream>
#include <list>
#include <algorithm>

using namespace std;

//声明结构体
typedef struct testListSort
{
  int number;
  std::string name;
  char time[10];
  int datalen;
}stuTest;

//结构体list
std::list<stuTest> listDataInfo;

//比较函数:根据结构体里面的整型number排序
bool sortStuInt(const stuTest& m1, const stuTest& m2)

{

  return m1.number < m2.number;
}

//比较函数:根据结构体里面的字符串name排序
bool comStuString(const stuTest& m1, const stuTest& m2)

{
  if(m1.name.compare(m2.name) <= 0)
  {
    return true;
  }
  else
  {
    return false;
  }
}

int main(void)
{
//仅对结构体里面的
for (int i = 0; i < 10; i++)
{
//结构体整型赋值
stuTest temp;
temp.number = rand()%100;

//结构体字符串赋值
int num = rand()%100;
char strChar[10];
itoa(num,strChar,10);
temp.name = strChar;

listDataInfo.push_back(temp);
}

//按照结构体里面的整型数据,对list里面结构体排序
listDataInfo.sort(sortStuInt);

//按照结构体里面的字符串数据,对list里面结构体排序
//listDataInfo.sort(comStuString);

return 0;
}

以上仅是对单个文件里面的list 按照结构体变量排序,如果在类的成员变量中,声明上述比较函数sortStuInt、comStuString,并且在类的其他成员函数调用的话,可能会有问题,这时可以把比较函数放到类前声明,在类的CPP中直接实现,再次在类的成员函数调用时就不会出错,具体原因不在此列出,可以自行尝试。以上内容纯属自我理解,有不准确的地方,请指出留言,相互学习。

C++ list结构体变量排序

标签:调用   成员   itoa   def   for   string   声明   自我   函数调用   

原文地址:https://www.cnblogs.com/lyx5990/p/9455530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!