C++ 对结构向量进行排序,降序或升序:C++;
我试图在下面的代码中对结构的向量进行排序。该结构有3个数据成员。我想从这些数据成员中加载一个向量,并按其中一个struct数据成员进行排序/排序。然而,这是行不通的。 我将此作为参考: 我将非常感谢您提供的任何帮助/提示链接。谢谢 示例代码: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
#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;i cout您需要提供一个比较函数,以便排序
工作
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