Как определить эквивалентность между `range::view` объектом и`std::vector`?

Я использую отличную библиотеку range-v3. Одна из моих функций возвращает ranges::view объект, который я хотел бы сравнить с std::vector, Конечно, я могу сравнить поэлементно, но должен быть лучший способ.

Как определить эквивалентность между ranges::view объект и std::vector?

1 ответ

Решение

Если вы хотите узнать, относятся ли два диапазона к последовательностям равных элементов, передайте их ranges::equal алгоритм ( ДЕМО):

int main() {
  std::vector<int> vec{5,4,3,2,1,0};
  assert(ranges::equal(vec, ranges::view::iota(0, 6) | ranges::view::reverse));
}
Другие вопросы по тегам