170 похожих чатов

Тут: https://learn.microsoft.com/ru-ru/cpp/cpp/reference-type-function-returns?view=msvc-170 среди прочего, написано: Функции можно объявить, чтобы они

возвращали ссылочный тип. Существует две причины создания такого объявления.

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

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

#include <iostream>
#include <vector>
#include <string>

using namespace std;

/*
Возвращаемая информация представляет собой настолько крупный объект, что возврат ссылки является более эффективным, чем возврат копии.
*/

const vector<string>& foo_ref(vector<string>& v) {
v = { v.begin(), v.end() - 1 };
return v;
}

int main() {

vector<string> v_s (10000000, "aaaaaaaaaa");
vector<string> v = foo_ref(v_s);
cout << v.size();
}


1] то есть const vector<string>& foo_ref(vector<string>& v) будет работать быстрее, нежели const vector<string> foo_ref(vector<string>& v) ? Внутренне замеры (на комп-е моем) говорят об обратном, а замерить с помощью https://quick-bench.com/ такие конструкции не умею. Кто-то может пожалуйста объяснить, правильно ли была понята идея?

2] И что означает "настолько крупный объект" — не очень понимаю...

Помогите пожалуйста с вопросами 1] и 2]..

1 ответов

35 просмотров

Н е будет, будет примерно одинаково, второе это Rvo/nrvo

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
<?php function prepareTel($data, $modx, $_multiTV) { if ($data['iteration'] == $data['row']['total']) { $data['tel'] = '<a class="link" href="tel: ' . $data['tel']...
Кирилл Гацевич
2
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Hi freinds. I'm reading an old Pascal book and I just want to compile and run its codes using fpc. What's your recommendation to use the environment efficiently? Please send m...
Shak
4
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Карта сайта