'sm'未在此范围内声明

onu*_*nur -1 c++ stdvector

以下参考用法有什么问题以及正确的用法是什么.我想为较小尺寸的矢量分配一个参考.

vector<int> R = {3,4,6,3,6,2,3};
vector<int> P = {5,9,8};

        if (P.size()>=R.size())
            vector<int>& sm = R;
        else
            vector<int>& sm= P;
Run Code Online (Sandbox Code Playgroud)

kin*_*nak 7

这部分没有错.但是你不能在sm以后使用,因为它的范围只是部分ifelse部分.

你应该使用这样的东西:

vector<int>& sm = (P.size()>=R.size()) ? R : P;
Run Code Online (Sandbox Code Playgroud)