如何引用最长的向量而不从输入C ++复制它? [重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

假设我有一个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" ...
}

有没有办法实现这一目标。非常感谢你。

c++ vector reference
2个回答
2
投票

使用条件运算符:

  vector<int> & long_vec = v1.size() > v2.size() ? v1 : v2;

1
投票

使用三元运算符:

int foo (vector<int>& v1, vector<int>& v2){

    vector<int>& long_vec = v2.size() > v1.size() ? v2 : v1;

    // do stuff with "long_vec" ...
}
© www.soinside.com 2019 - 2024. All rights reserved.