Контейнер обязательно будет диапазоном концептуально?

Из документации диапазонов-v3:

view::all

Вернуть диапазон, содержащий все элементы в источнике. Полезно для преобразования контейнеров в диапазоны.

Что меня смущает:

  1. По каким сценариям view::all используемый?
  2. Есть стандартные контейнеры (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 в вашем коде.

Другие вопросы по тегам