之间有什么区别吗?
vector<int> function(vector<int>& input) {
// do something with input then return it
input.push_back(3);
return input;
}
和
vector<int>& function(vector<int>& input) {
// do something with input then return it
input.push_back(3);
return input;
}
重要吗?因为当您将函数的返回值分配给新变量时,矢量会被复制:
vector<int>result = function(some_vector);
答案 0 :(得分:6)
存在差异,第二个函数可以在语句中充当左值。
function(some_vector).push_back(4);
这里不复制向量,修改原始的'some_vector'。此外,性能方面,这可能会产生很大的不同。
答案 1 :(得分:0)
使用reference作为参数允许返回函数void
的返回类型void function(vector<int>& input) {
// do something with input then return it
input.push_back(3);
return input;
}
顺便提一下,push_back
类的成员函数std::vector
的返回类型为void
。
返回对向量的引用允许将函数调用与类std :: vector的其他方法链接在一起。例如
function( v ).push_back( value );