c++ - 通过引用分配 vector

标签 c++ reference variable-assignment

我想在一个类中创建一个 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/

相关文章:

c++ - 返回最低节点的名称

C++/Qt : drawing a caret

variable-assignment - 真的将参数绑定(bind)到参数吗? (Perl6)

c++ - C 或 C++ 或 WinApi 中是否有任何函数可以创建目录,包括指定路径中所有不存在的目录?

java - 导出使用公共(public)项目的 JAR 项目

reference - 对引用进行链接完整性检查?

python - 如何将属性保留在 __dict__ 之外?

c++是否隐式复制构造函数复制数组成员变量?

python - 未绑定(bind)本地错误 : local variable 'rows' referenced before assignment

c++ - 如何在 C++ 中打开文件?