Одноэлементный диапазонC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Одноэлементный диапазон

Сообщение Anonymous »

Для функции, которая принимает диапазон, например:

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

void f(const std::ranges::range auto& r);
Иногда у меня есть только один элемент, который я хочу передать в функцию.
Для этого существует несколько способов создания диапазона из одного элемента. цель, например:

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

int i{};

/*1*/ f(std::array{i});
/*2*/ f(std::span{&i, 1});
/*3*/ f(std::ranges::views::single(i));
Все это работает, но мне хотелось бы знать, есть ли между ними практические различия (эффективность?) и следует ли отдать предпочтение какому-либо из них (или другому).< /p>
(Вопрос помечен как C++20, так и C++23 на случай, если между версиями есть различия, влияющие на ответ)

Подробнее здесь: https://stackoverflow.com/questions/792 ... ment-range
Ответить

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

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

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

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

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