mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-23 18:19:34 +08:00
re-optimize Matrix::resize(), add some comments
This commit is contained in:
parent
e20aceb6eb
commit
2ee7969f0a
@ -116,6 +116,7 @@ class Matrix : public MatrixBase<_Scalar, Matrix<_Scalar, _Rows, _Cols,
|
|||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = _Rows,
|
RowsAtCompileTime = _Rows,
|
||||||
ColsAtCompileTime = _Cols,
|
ColsAtCompileTime = _Cols,
|
||||||
|
SizeAtCompileTime = _Rows == Dynamic || _Cols == Dynamic ? Dynamic : _Rows * _Cols,
|
||||||
StorageOrder = _StorageOrder,
|
StorageOrder = _StorageOrder,
|
||||||
MaxRowsAtCompileTime = _MaxRows,
|
MaxRowsAtCompileTime = _MaxRows,
|
||||||
MaxColsAtCompileTime = _MaxCols,
|
MaxColsAtCompileTime = _MaxCols,
|
||||||
@ -149,6 +150,8 @@ class Matrix : public MatrixBase<_Scalar, Matrix<_Scalar, _Rows, _Cols,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/** This type can be used to declare any matrix with smaller dimensions.
|
||||||
|
*/
|
||||||
typedef Matrix<
|
typedef Matrix<
|
||||||
Scalar,
|
Scalar,
|
||||||
RowsAtCompileTime == 1 ? 1 : Dynamic,
|
RowsAtCompileTime == 1 ? 1 : Dynamic,
|
||||||
@ -157,8 +160,11 @@ class Matrix : public MatrixBase<_Scalar, Matrix<_Scalar, _Rows, _Cols,
|
|||||||
RowsAtCompileTime == 1 ? 1 : MaxRowsAtCompileTime,
|
RowsAtCompileTime == 1 ? 1 : MaxRowsAtCompileTime,
|
||||||
ColsAtCompileTime == 1 ? 1 : MaxColsAtCompileTime
|
ColsAtCompileTime == 1 ? 1 : MaxColsAtCompileTime
|
||||||
> BlockType;
|
> BlockType;
|
||||||
|
|
||||||
|
/** This type can be used to declare a column-vector */
|
||||||
typedef Matrix<Scalar, RowsAtCompileTime, 1,
|
typedef Matrix<Scalar, RowsAtCompileTime, 1,
|
||||||
StorageOrder, MaxRowsAtCompileTime, 1> ColumnType;
|
StorageOrder, MaxRowsAtCompileTime, 1> ColumnType;
|
||||||
|
/** This type can be used to declare a row-vector */
|
||||||
typedef Matrix<Scalar, 1, ColsAtCompileTime,
|
typedef Matrix<Scalar, 1, ColsAtCompileTime,
|
||||||
StorageOrder, 1, MaxColsAtCompileTime> RowType;
|
StorageOrder, 1, MaxColsAtCompileTime> RowType;
|
||||||
|
|
||||||
@ -178,9 +184,14 @@ class Matrix : public MatrixBase<_Scalar, Matrix<_Scalar, _Rows, _Cols,
|
|||||||
&& cols > 0
|
&& cols > 0
|
||||||
&& (MaxColsAtCompileTime == Dynamic || MaxColsAtCompileTime >= cols)
|
&& (MaxColsAtCompileTime == Dynamic || MaxColsAtCompileTime >= cols)
|
||||||
&& (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols));
|
&& (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols));
|
||||||
m_rows.setValue(rows);
|
if(SizeAtCompileTime == Dynamic)
|
||||||
m_cols.setValue(cols);
|
{
|
||||||
m_array.resize(rows * cols);
|
const int size = rows * cols;
|
||||||
|
if(size > m_rows.value() * m_cols.value())
|
||||||
|
m_array.resize(size);
|
||||||
|
m_rows.setValue(rows);
|
||||||
|
m_cols.setValue(cols);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Copies the value of the expression \a other into *this.
|
/** Copies the value of the expression \a other into *this.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user