0
顯然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
在呼叫者的功能。)
是的,我知道,我可以把指針返回值作爲我的函數的參數......但我寧願不。如果我真的必須這樣做,我寧願有一個單一的回報價值,而不是同時多。
由於提前,
安東尼
注:編輯,以便代碼實際上對應於輸出
你試過傳遞的參數通過'的std :: forward'? – 2011-05-11 21:42:21
你確定它不打印'0 0 0 42 0 0'嗎? – 2011-05-11 21:49:41