文本文件,其中数据如下:
0 320.77
1 100.44
2 117.66
3 541.55
数据是按照第一列排序的,但我想按照第二列和降序对其进行排序。
输出应如下:
3 541.55
0 320.77
2 117.66
1 100.44
答案 0 :(得分:0)
我有一个类似的问题,用第二种数据类型排序文件,我会给代码,但这似乎是一个功课问题,所以这里解释我是如何解决它的:
std::sort
qsort()
中的函数答案 1 :(得分:0)
我认为如果我自娱自乐并提供答案,现在不会影响@laky 大学的表现。
#include <utility>
#include <sstream>
#include <vector>
#include <iostream>
#include <algorithm>
using Entry = std::pair<int, float>;
using Storage = std::vector<Entry>;
void dump(const Storage& storage)
{
for(auto& [i, v] : storage)
std::cout << i << " " << v << "\n";
}
int main(void)
{
std::stringstream input;
input.str("0 320.77\n1 100.44\n2 117.66\n3 541.55\n");
Storage storage;
for ( /* read 'file' into vector storage for processing */
Entry entry;
input >> entry.first >> entry.second && input.good();
)
{
storage.push_back(std::move(entry));
}
std::cout << "Original data:\n";
dump(storage);
std::sort(storage.begin(), storage.end(),
[](Entry l, Entry r) /* sorting predicate */
{
return l.second > r.second;
});
std::cout << "Sorted data:\n";
dump(storage);
return 0;
}