[英]Should I always use a 1D vector with my own indexing, or is a multi-dimensional vector ok?
[英]1D Vector to Multi-dimensional array / Vector
我有一个刚刚从文件中读取的浮点数的一维向量。
std::vector<float> result(s.size() / sizeof(float));
我想像这样使用这些数据
myTable[rl][gl][bl][0];
那么,有没有简单的方法可以将我的一维矢量转换为简单的多维矢量或多维数组?
float myTable[100][10][20][30];
vector<vector<vector<vector<int> >>> myTable;
在这里我仍然可以轻松地使用在整个代码中设置的索引。 而不必将其转换为像myTable [indexmathhere]这样的1D访问权限
除非您有缓存要求,否则我实际上不会重写数据(尽管我们对您的数据布局一无所知)。
将向量存储在一个类中,然后编写一个访问器函数,该函数带有四个索引参数并执行必要的算术以将它们展平为单个向量索引。
class MyMatrix
{
std::vector<float> result;
public:
float at(int r, int g, int b, int a) const
{
return result[r+W*g+W*H*b+W*H*D*a]; // or whatevs
}
};
您甚至可以编写一些operator()
重载,但您需要三种代理类型才能从中获得四个维度的索引。
如果您有固定大小的数组,则可能应该使用std :: array。 这个问题是这样的: 多维std :: array不幸的是,没有将数据放入此数组的单一方法,您需要手动进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.