'sm' 未在此范围内声明

'sm' was not declared in this scope

下面的参考用法有什么错误,正确的用法是什么。我想为较小的向量分配一个引用。

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;

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

你应该使用这样的东西:

vector<int>& sm = (P.size()>=R.size()) ? R : P;