如何报告引用c ++

Use*_*ied 1 c++ alias reference

有没有办法初始化对象的引用,然后在另一个对象上重新生成它而不会产生副本?我的意思是:

    std::vector < int >& vec1 = someVector;
    std::vector < int >& vec2 = someOtherVector:
    if ( someCondition )
    {
        vec2 = someVector;//copying occurs here
        vec1 = someOtherVector;
    }
Run Code Online (Sandbox Code Playgroud)

相反,我想要的是作为vec2对if 的引用someOtherVectorvec1引用,而不是它们成为副本.不幸的是,有些东西:someVectorsomeCondition

     if ( someCondition )
     {
         std::vector < int >& vec1 = someVector;
         std::vector < int >& vec2 = someOtherVector;
     }
     else
     {
         std::vector < int >& vec1 = someOtherVector;
         std::vector < int >& vec2 = someVector;         
     }
Run Code Online (Sandbox Code Playgroud)

由于引用的范围仅限于ifelse实体,因此会涉及在我的程序中复制大量代码,那么有什么方法可以解决这个问题吗?我在教科书或网上找不到解决办法是不成功的.

Mik*_*our 8

初始化后不能重新引用参考; 如你所说,它们是特定对象的别名.

如果条件在初始化时已知,那么您可以使初始化条件有条件:

std::vector<int>& vec1 = someCondition ? someVector : someOtherVector;
Run Code Online (Sandbox Code Playgroud)

否则,请使用指针,或者使用引用将代码重构为另一个函数,如Jerry Coffin的回答中所述.