Из документации Диапазоны-V3:
view::all
Вернуть диапазон, содержащий все элементы в источнике.
Полезно для преобразования контейнеров в диапазоны.
Что меня смущает:
view::all
используемый?std::vector
, std::list
и т. д.) нетНапример:
auto coll = std::vector{ 1, 2, 2, 3 };
view::all(coll) | view::unique; // version 1
coll | view::unique; // version 2
Есть ли разница между version 1
а также version 2
?
Например, эта часть документации не обновлялась с момента переключения терминологии range-v3. Да, контейнер — это Range (он имеет begin()
а также end()
которые возвращают пару итератор / страж). Это не просмотр (диапазон с O (1) копированием / перемещением). Итак, документация для view::all
должен прочесть:
view::all
Вернуть представление, содержащее все элементы в источнике. Полезно для преобразования контейнеров в представления.
Чтобы ответить на ваш второй вопрос, нет никакой разницы между версией 1 и версией 2 в вашем коде.
Других решений пока нет …