Избегайте ненужного копирования в тернарном оператореC++

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

Сообщение Anonymous »

Насколько я понимаю, тип, который оценивает тернарный оператор в следующей функции, — это std::string, т. е. это значение, а не ссылка.
Это есть ли способ избежать копирования строки при оценке первой ветки?

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

bool f(const std::vector& vec, const std::string& s) {
const std::string& s2 = !s.empty() && s[0] == '{' ? s : '{' + s + '}';
for (const std::string& v : vec) {
if (v == s2)
return true;
}
return false;
}
РЕДАКТИРОВАТЬ:
Похоже, я слишком конкретно сформулировал вопрос. Я хотел, чтобы код со строками был просто примером. Вопрос, который я имел в виду, более общий. Если вам нужна потенциально дорогостоящая модификация большого объекта, но при выполнении условия вы можете использовать объект как есть, есть ли способ привязать исходный объект или результат вычисления к ссылке, не копируя исходный объект, если вычисление не требуется?

Подробнее здесь: https://stackoverflow.com/questions/790 ... y-operator
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли явно привести prvalue к константной ссылке, чтобы избежать дополнительного копирования в тернарном операторе?
    Anonymous » » в форуме C++
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Избегайте повторения одного и того же кода в конструкторе копирования и операторе=.
    Гость » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Гость
  • Избегайте пустых данных из модели в операторе Foreach
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Удалить элементы flexbox ненужного пространства
    Anonymous » » в форуме CSS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Удаление ненужного масштабирования оси Y Seaborn Boxplot
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

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