C++ 艾根::矩阵|为什么艾根期望整数而不是大小|?
根据,与行数和列数相对应的第二个和第三个模板参数应为C++ 艾根::矩阵|为什么艾根期望整数而不是大小|?,c++,size,eigen,C++,Size,Eigen,根据,与行数和列数相对应的第二个和第三个模板参数应为int 我想知道为什么这些参数不是size\t?唯一的理由是,当eigen允许行数或列数为负数时,有int 这之所以有意义,是因为Eigen::Dynamic。有人能确认这是允许行/列为负值的原因吗?本征::动态根本不是原因,因为它可以等于例如数值限制::max(),或相同的大小(-1) 我认为这是因为Egen的目标受众比其他任何东西都更喜欢使用int。 然后,如果您对这个选择不满意,您可以使用EIGEN\u DEFAULT\u densite
int
我想知道为什么这些参数不是size\t
?唯一的理由是,当eigen允许行数或列数为负数时,有int
这之所以有意义,是因为
Eigen::Dynamic
。有人能确认这是允许行/列为负值的原因吗?本征::动态根本不是原因,因为它可以等于例如数值限制::max()
,或相同的大小(-1)
我认为这是因为Egen的目标受众比其他任何东西都更喜欢使用int。
然后,如果您对这个选择不满意,您可以使用EIGEN\u DEFAULT\u densite\u INDEX\u TYPE
预处理器指令设置为您认为合适的值,并面对后果……)
不,说真的,在实际使用之前,我至少会运行完整的特征测试集。也许,也许不会-也许你应该问问库作者。我会说它们是
int
,因为Eigen::Dynamic
是一个int
的负值,在库中有特殊意义。但是,这并不能真正解释如何选择int
,他们可以很容易地将它设置为ssize\t
,这是size\t
的有符号版本。对于大型矩阵,使用动态矩阵比使用大型固定大小更好。不推荐使用无符号类型,而不使用位字段或BigNIM。@ FielPeGon阿尔维斯(代码)> SsiZeZt不是C++的一部分,而是POSIX,IRC,范围为[-1…2×10 ^ 15 ]或其他。由于Eigen是跨平台的,所以它没有这个选项。@Marc Glisse,这不是谁推荐的?对C++标准库容器的随机访问是由SiZeZT索引生成的,并且它们的大小被作为sieZHT返回。这基本上使程序与Eigen(C++的代码)(除了玩具示例)进行接口,非常警告发出或充满铸件。@斯拉瓦