对结构、降序或升序的向量进行排序:C++
Sorting a Vector of struct, descending or ascending order: C++
我正在尝试对以下代码中的结构向量进行排序。该结构有 3 个数据成员。我想从这些数据成员加载一个向量,并按结构数据成员之一进行排序/排序。但是,这不起作用。我以此为参考:http://www.cplusplus.com/reference/algorithm/sort/我将不胜感激任何帮助/指针链接。谢谢。
示例代码:
#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
您需要
提供一个比较函数才能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);
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 试图在c++中对数字列表进行排序
- 如何在C++中对数组进行冒泡排序