2011-05-11 26 views
0

可能重複:
std::pair of referencesmake_pair的引用?

顯然make_pair使得拷貝任何的它使一對,參見例如以下代碼:

#include <iostream> 
#include <vector> 
using namespace std; 
int main(void) { 
    int i; 
    vector<int> v (1), w (1); 
    pair<vector<int>, vector<int> > p = make_pair(v, w); 
    p.first[0] = 42; 
    for (i = 0; i < v.size(); i++) { 
     cout << v[i] << " "; 
    } 
    for (i = 0; i < v.size(); i++) { 
     cout << p.first[i] << " "; 
    } 
    return 0; 
} 

它打印

0 42 

代替

42 42 

如我想。

是否有某種方式來獲得其他行爲(即make_pair真的只存儲引用它的任何一對)? (最好,我希望函數返回這個對來初始化調用者函數中的一個變量,而不用做所有額外的複製。如果這是相關信息,返回的一對向量可以/應該聲明爲const在呼叫者的功能。)

是的,我知道,我可以把指針返回值作爲我的函數的參數......但我寧願不。如果我真的必須這樣做,我寧願有一個單一的回報價值,而不是同時多。

由於提前,

安東尼

注:編輯,以便代碼實際上對應於輸出

+0

你試過傳遞的參數通過'的std :: forward'? – 2011-05-11 21:42:21

+0

你確定它不打印'0 0 0 42 0 0'嗎? – 2011-05-11 21:49:41

回答

相關問題