gpt4 book ai didi

c++ - 通过引用分配 vector

转载 作者:行者123 更新时间:2023-11-28 01:35:55 25 4
gpt4 key购买 nike

我想在一个类中创建一个 valarray 类型的 vector ,其中所述 vector 的每个元素都引用同一类中某个结构类型的 vector 的一个元素。示意性地,我有

struct particle{
valarray<double> x(2); //x has 2 components
};

class SPH{
vector<particle> ps(1000); //ps has 1000 particles
vector<valarray> y(1000);
void RK4_step();
};

void SPH::RK4_step(){
for(int a=0; a<1000; a++)
y[a] = ps[a].x; //HERE
}

是否有可能以某种方式通过引用在 (HERE) 中进行赋值?

最佳答案

使用 std::reference_wrapper

struct particle{
valarray<double> x(2); //x has 2 components
};

class SPH{
vector<particle> ps(1000); //ps has 1000 particles
vector<std::reference_wrapper<valarray<double>>> y(1000);
void RK4_step();
};

void SPH::RK4_step(){
for(int a=0; a<1000; a++)
y[a] = std::ref(ps[a].x);
}

警告。在 vector 调整大小后,不能保证 vector 元素在内存中占据相同的位置。如果 ps 随时调整大小,您将丢失所有引用。在那种情况下,我会推荐 std::deque

关于c++ - 通过引用分配 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49244739/

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