Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对结构向量进行排序,降序或升序:C++;_C++_Sorting_Vector_Struct - Fatal编程技术网

C++ 对结构向量进行排序,降序或升序:C++;

C++ 对结构向量进行排序,降序或升序:C++;,c++,sorting,vector,struct,C++,Sorting,Vector,Struct,我试图在下面的代码中对结构的向量进行排序。该结构有3个数据成员。我想从这些数据成员中加载一个向量,并按其中一个struct数据成员进行排序/排序。然而,这是行不通的。 我将此作为参考: 我将非常感谢您提供的任何帮助/提示链接。谢谢 示例代码: #include <iostream> #include <string> #include <vector> #include <algorithm> struct my_data { int d

我试图在下面的代码中对结构的向量进行排序。该结构有3个数据成员。我想从这些数据成员中加载一个向量,并按其中一个struct数据成员进行排序/排序。然而,这是行不通的。 我将此作为参考: 我将非常感谢您提供的任何帮助/提示链接。谢谢

示例代码:

#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;
    }
}
#包括
#包括
#包括
#包括
结构我的_数据{
int data_id;
字符串数据;
字符串数据_2;
};
int main(){
向量my_向量;
我的_数据新的_数据;
对于(int i=0;i<3;i++){
如果(i==0){
新建_data.data_id=i;
新建_data.data_one=“BBBB”;
new_data.data_two=“bbbb”;
my_vector.push_back(新_数据);
}
如果(i==1){
新建_data.data_id=i;
new_data.data_one=“AAAA”;
new_data.data_two=“aaaa”;
my_vector.push_back(新_数据);
}
如果(i==2){
新建_data.data_id=i;
新建_data.data_one=“CCCC”;
new_data.data_two=“cccc”;
my_vector.push_back(新_数据);
}
}
//现在,我需要一些帮助来按“data_one”对向量进行排序,
//类似这样的东西(下面是排序函数)!
排序(my_vector.begin()、my_vector.end()、data_one);
对于(int i=0;icout您需要提供一个比较函数,以便
排序
工作

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


std::sort(my_vector.begin()、my_vector.end()、myfunction);
您需要提供一个比较函数,以便
排序
工作

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


<代码> STD::排序(MyApvest.Field.Enter(),MyFooLoad;/P> >没有Cd>:St::/Case>,也不是CGOT中的向量!但是现在用C++固定了,没有<代码> STD::排序< /COD>,也没有CGOT中的向量!但是现在用C++固定了。谢谢它工作得很完美,但是:条件应该是:[I.DATAYON.J.DATAYON]做得好,简单但有帮助。谢谢它工作得很好,但是:条件应该是:[i.data\u onecout << 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