2016-01-22 121 views
0

我想在下面的代码中排序一个结构的向量。该结构有3个数据成员。我想从这些数据成员中加载一个向量,并由一个结构数据成员进行排序/排序。但是这不起作用。 我使用它作为参考:http://www.cplusplus.com/reference/algorithm/sort/ 我会很感激任何帮助/指针链接去通过。谢谢。排序结构的矢量,降序或升序:C++

示例代码:

#include <iostream> 
#include <string> 
#include <vector> 
#include <algorithm> 

struct my_data { 
    int data_id; 
    string data_one; 
    string data_two; 
}; 

int main() { 
    vector<my_data> my_vector; 
    my_data new_data; 
    for (int i = 0; i < 3; i++) { 
     if (i == 0) { 
      new_data.data_id = i; 
      new_data.data_one = "BBBB"; 
      new_data.data_two = "bbbb"; 
      my_vector.push_back(new_data); 
     } 
     if (i == 1) { 
      new_data.data_id = i; 
      new_data.data_one = "AAAA"; 
      new_data.data_two = "aaaa"; 
      my_vector.push_back(new_data); 
     } 
     if (i == 2) { 
      new_data.data_id = i; 
      new_data.data_one = "CCCC"; 
      new_data.data_two = "cccc"; 
      my_vector.push_back(new_data); 
     } 
    } 
    // now, I want some help to sort my vector by "data_one", 
    // something like this (below sorting function)! 
    std::sort(my_vector.begin(), my_vector.end(), data_one); 
    for (int i = 0; i < my_vector.size(); i++) { 
     cout << my_vector[i].data_id 
      << "\t" << my_vector[i].data_one 
      << "\t" << my_vector[i].data_two << endl; 
    } 
} 

我期待从打印以下输出脱节:

cout << my_vector[i].data_id << "\t" << my_vector[i].data_one << "\t" << my_vector[i].data_two << endl; 

2  AAAA  aaaa 
1  BBBB  bbbb 
3  CCCC  cccc 
+1

有没有'的std :: sort'也不载体用C –

+0

得到它!但现在用C++修复。 –

回答

2

您需要为sort工作提供了比较功能。

bool myfunction (my_data i, my_data j) { return (i.data_one < j.data_one); }

std::sort(my_vector.begin(),my_vector.end(),myfunction);

+0

感谢它完美,但:条件应该是:[i.data_one

+0

做得好,简单但有帮助。 –