这个问题在这里已有答案:
假设我有一个C ++函数,如下所示:
int foo (vector<int>& v1, vector<int>& v2){
vector<int> long_vec;
if ( v1.size() >= v2.size())
long_vec = v1;
else
long_vec = v2;
// do stuff with "long_vec" ...
}
我不想将“v1”或“v2”中的内容复制到“long_vec”中。相反,我只想知道“v1”或“v2”更长,并使用它。我知道像矢量引用这样的东西,如下所示:
vector<int>& long_ref = v1;
但是这个引用必须在声明时初始化。基本上我想要以下行为:
int foo (vector<int>& v1, vector<int>& v2){
//vector<int> long_vec;
vector<int>& long_vec; // won't compile
if ( v1.size() >= v2.size())
long_vec = v1;
else
long_vec = v2;
// do stuff with "long_vec" ...
}
有没有办法实现这一目标。非常感谢你。
使用条件运算符:
vector<int> & long_vec = v1.size() > v2.size() ? v1 : v2;
使用三元运算符:
int foo (vector<int>& v1, vector<int>& v2){
vector<int>& long_vec = v2.size() > v1.size() ? v2 : v1;
// do stuff with "long_vec" ...
}