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

Из документации Диапазоны-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?

11

Решение

Например, эта часть документации не обновлялась с момента переключения терминологии range-v3. Да, контейнер — это Range (он имеет begin() а также end() которые возвращают пару итератор / страж). Это не просмотр (диапазон с O (1) копированием / перемещением). Итак, документация для view::all должен прочесть:

view::all

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

Чтобы ответить на ваш второй вопрос, нет никакой разницы между версией 1 и версией 2 в вашем коде.

12

Другие решения

Других решений пока нет …