在cpp boost库中使用数组

时间:2014-12-03 16:51:47

标签: c++ boost

我刚刚开始使用boost库,需要使用boost :: array。我希望这个数组N的大小取决于我将加载到程序中的某个矩阵的大小。

我发现如果我预先确定了大小,即我知道矩阵的大小为10,那么

const int N = 10; 
typedef std::pair<int,int> Edge; 
array<Edge,N> edges;

有效,我可以按照我的选择使用数组edges。但是,如果我没有明确表示const int N =10,而是取决于const int N =b,其中b是某个整数,那么我会收到错误'N' cannot appear in constant-expression

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

boost::array和模板参数通常需要常量表达式作为参数。这是因为模板在编​​译时而不是运行时进行评估。

如果您需要运行时动态数组,那么std::vector可能就是您要找的。

答案 1 :(得分:0)

boost::array无法动态调整大小,其具体目的是针对固定大小的数组。

如果您想在运行时调整大小,可以使用std::vector

具有相同类型但尺寸不同的两个boost::array是不同种类的对象,并且彼此不兼容。