2014-03-03 204 views
-1

返回一個對象VS引用返回一個對象

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

是的,它會被複制,但是如果你不想拷貝vector,比如'function(input).function ...' – songyuanyao

回答

6

是有區別的,第二個功能可以作爲在一份聲明中左值行事。

function(some_vector).push_back(4); 

這裏不復制矢量,原來的'some_vector'被修改。另外,性能方面,這可能會產生很大的差異。

0

使用參考作爲參數允許以使功能無效

void function(vector<int>& input) { 
    // do something with input then return it 
    input.push_back(3); 
    return input; 
} 

通過std::vector類的方式成員函數push_back的返回類型返回類型void

返回對向量的引用允許將函數調用與類std :: vector的其他方法鏈接在一起。例如:

function(v).push_back(value);