gpt4 book ai didi

c++ - 如何重新定位引用 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:10:58 25 4
gpt4 key购买 nike

有没有什么方法可以初始化一个对象的引用,然后在不产生拷贝的情况下将它重新指向另一个对象?我的意思是:

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

相反,我想要的是 vec2 是对 someOtherVector 的引用,而 vec1 是对 someVector< 的引用 如果 someCondition 被满足,而不是它们成为拷贝。不幸的是,有些事情是这样的:

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

由于引用的范围仅限于 ifelse 主体,因此会涉及在我的程序中复制大量代码,所以有什么办法可以解决这个问题问题?我未能在教科书或网上找到解决方案。

最佳答案

引用在初始化后不能被重置;正如您所说,它们是特定对象的别名。

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

std::vector<int>& vec1 = someCondition ? someVector : someOtherVector;

否则,请改用指针,或使用引用将代码重构到另一个函数中,如 Jerry Coffin's answer 中所述。 .

关于c++ - 如何重新定位引用 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23611302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com