我刚刚开始使用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
非常感谢任何帮助。
答案 0 :(得分:0)
boost::array
和模板参数通常需要常量表达式作为参数。这是因为模板在编译时而不是运行时进行评估。
如果您需要运行时动态数组,那么std::vector
可能就是您要找的。 p>
答案 1 :(得分:0)
boost::array
无法动态调整大小,其具体目的是针对固定大小的数组。
如果您想在运行时调整大小,可以使用std::vector
。
具有相同类型但尺寸不同的两个boost::array
是不同种类的对象,并且彼此不兼容。