В соответствии с Eigen documentation, вторым и третьим аргументами шаблона, которые соответствуют количеству строк и столбцов, как ожидается, будет int
.Eigen :: Matrix | Почему eigen ожидает int, а не size_t?
Мне интересно, почему эти аргументы не являются size_t
? Единственная причина, по которой есть int
, есть, когда собственный разрешит иметь отрицательное число строк или столбцов?
Единственная причина, по которой это может иметь смысл, - это из-за Eigen::Dynamic
. Может ли кто-нибудь подтвердить, что это причина, позволяющая отрицательные значения для строк/столбцов?
Возможно, возможно, нет - возможно, вам следует попросить авторов библиотеки. Я бы сказал, что это 'int', потому что' Eigen :: Dynamic' является 'int', что является отрицательным значением со специальным значением в библиотеке. Но опять же, это действительно не объясняет выбор 'int', они могли бы легко сделать его' ssize_t', который является подписанной версией 'size_t'. –
Для больших матриц лучше использовать динамический, чем огромный фиксированный размер. Использование неподписанных типов для чего-либо, кроме битовых полей или бигнома, не рекомендуется. –
@ FilipeGonçalves 'ssize_t' не является частью C++, а скорее POSIX, IIRC, диапазон - [-1 ... 2 * 10^15] или что-то в этом роде. Поскольку Eigen предназначен для кросс-платформы, у него нет этой опции. –