我想以排序的方式遍历一个向量,而不修改底层的向量。是否可以使用
我已经成功地使用
您可以在此处找到一个完整的示例:https://godbolt.org/z/cKer8frvq
std::views
和/或std::range
来实现?我已经成功地使用
views
实现了过滤,但我不知道是否可能使用谓词进行排序。您可以在此处找到一个完整的示例:https://godbolt.org/z/cKer8frvq
#include <iostream>
#include <ranges>
#include <vector>
#include <chrono>
struct Data{
int a;
};
int main() {
std::vector<Data> vec = {{1}, {2}, {3}, {10}, {5}, {6}};
auto sortedView = // <= can we use std::views here ?
for (const auto &sortedData: sortedView) std::cout << std::to_string(sortedData.a) << std::endl; // 1 2 3 5 6 10
for (const auto &data: vec) std::cout << std::to_string(data.a) << std::endl; // 1 2 3 10 5 6
}
std::to_string
是不必要的,std::cout << data.a
是正确的。 - Jarod42