ドキュメントには次のように書かれています。
... Eigenでは、ベクトルは1行または1列の行列の特殊なケースです。1列の場合が最も一般的です。このようなベクトルは列ベクトルと呼ばれ、多くの場合、単なるベクトルと省略されます。1つの行がある他の場合、それらは行ベクトルと呼ばれます。
ただし、このプログラムは直感的でない結果を出力します。
#include <eigen3/Eigen/Dense>
#include <iostream>
typedef Eigen::Matrix<double, 1, Eigen::Dynamic> RowVector;
int main(int argc, char** argv)
{
RowVector row(10);
std::cout << "Rows: " << row.rows() << std::endl;
std::cout << "Columns: " << row.cols() << std::endl;
row.transposeInPlace();
std::cout << "Rows: " << row.rows() << std::endl;
std::cout << "Columns: " << row.cols() << std::endl;
}
出力:
Rows: 1
Columns: 10
Rows: 1
Columns: 10
これはバグですか、それともライブラリを誤って使用していますか?