Контейнер обязательно будет диапазоном концептуально?
Из документации диапазонов-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
?
1 ответ
Например, эта часть документации не обновлялась с момента переключения терминологии range-v3. Да, контейнер - это Range (он имеет begin()
а также end()
которые возвращают пару итератор / страж). Это не просмотр (диапазон с O(1) копированием / перемещением). Итак, документация для view::all
должен прочесть:
view::all
Вернуть представление, содержащее все элементы в источнике. Полезно для преобразования контейнеров в представления.
Чтобы ответить на ваш второй вопрос, нет никакой разницы между версией 1 и версией 2 в вашем коде.