【发布时间】:2020-02-21 11:52:07
【问题描述】:
使用 Range-v3(0.10.0 版)库,我试图从 std::vector 构造一个范围,将其转换为另一个范围,最后对该范围进行排序。我预计排序步骤会产生另一个我以后可以使用的范围。但我能想到的最好的是:
std::vector<std::string> const input { "2", "3", "1" };
using namespace ranges;
std::vector<int> output = input
| views::transform([](std::string s) { return std::stoi(s); })
| to<std::vector>()
| actions::sort
注意在转换步骤之后和排序步骤之前使用to<std::vector>()。这似乎分配了一个新的std::vector,而我只想对转换步骤产生的范围进行排序。
为什么没有 view::sort ?它非常适合上述范围的组成。
【问题讨论】:
-
考虑如何实现一个假设的
view::sort。