Используя библиотеку 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
? Это хорошо вписалось бы в вышеприведенную композицию диапазонов.