可能重复:
std::pair of references
显然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
实际上只存储对它所做的任何内容的引用?)
(最好的是,我希望函数返回这一对来初始化调用函数中的变量,而不进行所有额外的复制。如果这是相关信息,则返回的向量对可以/应该声明为{ {1}}在调用者函数中。)
是的,我知道,我可以把指针返回值作为我的函数的参数......但我宁愿不这样做。如果我真的必须这样做,我宁愿只有一个返回值,而不是同时有很多。
提前致谢,
安东尼
注意:编辑后代码实际上对应于输出