Представление диапазона в std::vectorC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Представление диапазона в std::vector

Сообщение Anonymous »

Какой метод преобразования представления в std::vector предлагается в предлагаемом C++20 (The One) Ranges TS?

Следующий код не компилируется:

Код: Выделить всё

int
main() {
std::vector values = {1.0, 2.0, 3.0, 4.0, 5.2, 6.0, 7.0, 8.0, 9.0};
//fmt::print("{}\n", std::experimental::ranges::views::filter(values, [] (float v) { return v < 5.f; }));
std::vector foo = vw::filter(values, [] (float v) { return v < 5.f; });
fmt::print("{}\n", foo);
}
с ошибкой

Код: Выделить всё

../src/view.cpp:19:40: error: conversion from     ‘std::experimental::ranges::v1::filter_view’ to non-scalar type ‘std::vector’ requested
std::vector foo = vw::filter(values, [] (float v) { return v < 5.f; });
(строка с комментариями также не скомпилируется из-за некоторых ограничений CV).

Итак, как мне сделать что-нибудь с представлением, кроме использования цикла for на основе диапазона?

Также несколько дополнительных вопросов:
  • Является ли реализация cmcstl2, которую я использовал, даже следующей предложению? Ranges-v3 вроде нет.
  • Есть ли какая-нибудь документация по Ranges TS? PDF-файл с предложением, который я нашел, представляет собой ужасно отформатированный дамп кода в стиле diff. На самом деле мне было гораздо проще читать исходные тексты cmcstl2 напрямую. Похоже, что cppreference тоже не хватает...


Подробнее здесь: https://stackoverflow.com/questions/588 ... -stdvector
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»