我在使用 boost 多维数组时需要帮助。我必须构造一个二维数组,其中: (0 <= j <= 1) 和 (i) 根据以下条件动态增长:
long boostArray[i][j];
因此,这就像构建一个包含(未知)列和两行的表。
我已经从 Boost Library 网站上提供的示例开始:
#include "boost/multi_array.hpp"
#include <cassert>
int main () {
// 3 x 4 x 2
typedef boost::multi_array<double, 3> array_type;
typedef array_type::index index;
array_type A(boost::extents[3][4][2]);
int values = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
A[i][j][k] = values++;
int verify = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
assert(A[i][j][k] == verify++);
return 0;
}
问题是我没有彻底理解上面的代码,以便调整它的结构并建立我想要的数组。在使用 Boost Library 时,我不确切知道如何在我的数组中添加/删除元素,特别是如果这个数组像我上面描述的那样动态增长。
例如,在处理向量时,我倾向于在调整向量大小后使用:push_back和pop_back。