Как сравнить представление диапазона с «литералом представления» в C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как сравнить представление диапазона с «литералом представления» в C++?

Сообщение Anonymous »

Представьте, что эта функция возвращает представление:

Код: Выделить всё

auto even_numbers_up_to(int n) {
using namespace std::views;
return iota(1, n + 1)
| filter([](auto e) {return e % 2 == 0; });
}
Это можно проверить, используя этот код:

Код: Выделить всё

int n = 4;
auto actual = std::format("{}", even_numbers_up_to(n));
auto expected = std::format("[2, {}]",n);
std::println("{}",actual==expected);
Но создание двух строк (или других контейнеров) для сравнения фактического представления с ожидаемым кажется дорогостоящим, поэтому лучше написать что-то вроде этого, что возможно на других языках:

Код: Выделить всё

std::println("{}", even_numbers_up_to(n) == [2,n]); // does not compile
Есть ли способ сравнить представление с другим представлением или чем-то вроде «литерала представления» без необходимости предварительно материализовать представление в какой-либо контейнер?

Подробнее здесь: https://stackoverflow.com/questions/798 ... teral-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»