make_pair的参考?

时间:2011-05-11 21:40:48

标签: c++ reference

  

可能重复:
  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}}在调用者函数中。)

是的,我知道,我可以把指针返回值作为我的函数的参数......但我宁愿不这样做。如果我真的必须这样做,我宁愿只有一个返回值,而不是同时有很多。

提前致谢,

安东尼

注意:编辑后代码实际上对应于输出

1 个答案:

答案 0 :(得分:0)