У меня есть код pre-С++ 11, в котором я использую ссылки const
для передачи больших параметров, таких как vector
. Пример следующий:
int hd(const vector<int>& a) {
return a[0];
}
Я слышал, что с новыми функциями С++ 11 вы можете передать vector
по значению следующим образом без обращений к производительности.
int hd(vector<int> a) {
return a[0];
}
Например, этот ответ говорит
С++ 11 перемещение семантики делает передачу и возврат по значению гораздо более привлекательным даже для сложных объектов.
Правда ли, что эти два параметра одинаковы по производительности?
Если да, то когда используется ссылка const, как в варианте 1, лучше, чем опция 2? (то есть зачем нам все еще нужно использовать ссылки const в С++ 11).
Одна из причин, по которой я спрашиваю, заключается в том, что ссылки на const ссылаются на вычет параметров шаблона, и было бы намного проще использовать только пропущенные значения, если это то же самое со ссылкой на const reference-wise.