通过引用分配向量
Assign vectors by reference
我想在一个类内制作一个 valarray-type 的向量,其中所述向量的每个元素都引用同一类中某个结构类型的向量的元素。 示意性地,我有
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
}
是否可以以某种方式通过引用(此处(进行分配?
使用 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);
}
警告。矢量元素不保证在调整大小后在内存中占据相同的位置。如果ps
随时调整大小,您将丢失所有引用。在这种情况下,我会推荐std::deque
> 有什么意义?
为什么不只提供一个访问器函数来获取valarray
元素呢?
struct particle{
valarray<double> x(2); //x has 2 components
};
class SPH{
vector<particle> ps(1000); //ps has 1000 particles
valarray<double>& va(size_t n) { return ps[n].x; }
const valarray<double>& va(size_t n) const { return ps[n].x; }
// ...
};
相关文章:
- 用字符串的向量分配字符串向量
- 如何将向量分配给参考变量?
- 如何将C++向量分配给非表全局变量
- 向量分配上的 C++ 分割错误
- 如何将int分解为数字并以相同的顺序为向量分配数字
- 将向量分配给一个元素
- 将向量分配给向量向量的向量时,向量是范围的
- 带有Valgrind的C 的向量分配中的内存泄漏
- 将向量分配给另一个
- 为向量分配内存
- 为结构的整个向量分配结构的元素
- 将向量分配给结构的向量字段
- C++对象的向量:分配对象
- C++:通过从映射向量分配映射实例来填充映射的映射
- 将儿童的向量分配给祖父母的向量
- 使用 std::向量分配的类比 LOT 的指针分配慢
- C++ 向量分配问题
- 为什么向量分配会改变分配的向量
- 在C++中初始化向量时,你能给向量分配一个大的内存块吗
- 向量分配中的问题