2011-05-11 27 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

回答

相关问题