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