根据Eigen文档,第二个和第三个模板参数对应行数和列数,预期为
int
。
我想知道为什么这些参数不是size_t
?唯一需要使用int
的理由是Eigen允许有负数行或列吗?
唯一有可能合理的解释是Eigen::Dynamic
。有人可以确认这是否是允许行/列具有负值的原因吗?
int
,因为Eigen::Dynamic
是一个负值,在库中具有特殊含义。但话说回来,这并不能真正解释为什么选择了int
,他们本可以很容易地将其设为ssize_t
,后者是size_t
的有符号版本。 - Filipe Gonçalvesssize_t
不是 C++ 的一部分,而是 POSIX 的一部分。如果我没记错的话,它的范围是 [-1...2*10^15] 或者类似的值。由于 Eigen 旨在跨平台使用,因此它没有这个选项。 - Avi Ginsburg