std::pair 和eigen
时间: 2023-12-14 13:05:23 浏览: 149
std::pair是STL的一个结构体模板,用于存储两个不同类型的变量,一般用于返回多个值或者组合两个变量成为一个整体。例如,std::pair<int, double> p(1, 3.14)就是一个存储了一个int类型和一个double类型变量的pair。
Eigen是一个C++开源的数学库,主要用于线性代数计算。它提供了矩阵和向量的基本运算,支持各种数据类型(如int、float、double等),具有高度的数学表现力和性能优势。Eigen的矩阵和向量类使用模板元编程技术,使得代码高度通用且易于扩展。Eigen的主要特点是高性能、易用性和代码简洁。它的设计目标是提供一种灵活、高效、可扩展的线性代数计算库,适用于科学计算、机器学习和计算机视觉等领域。
相关问题
std::pair存放double和eigen::isometry
可以使用 `std::pair` 存放 `double` 和 `Eigen::Isometry3d` 类型的对象,用法如下:
```cpp
#include <iostream>
#include <utility>
#include <Eigen/Geometry>
int main() {
double d = 1.23;
Eigen::Isometry3d T;
T.linear() = Eigen::Quaterniond(0.707, 0, 0.707, 0).toRotationMatrix();
T.translation() << 1, 2, 3;
std::pair<double, Eigen::Isometry3d> pair(d, T);
std::cout << "d: " << d << std::endl;
std::cout << "T: " << std::endl << T.matrix() << std::endl;
std::cout << "pair.first: " << pair.first << std::endl;
std::cout << "pair.second: " << std::endl << pair.second.matrix() << std::endl;
return 0;
}
```
在上述示例中,首先定义了一个 `double` 类型的对象 `d` 和一个 `Eigen::Isometry3d` 类型的对象 `T`,然后使用 `std::pair` 存放这两个对象,最后输出这两个对象以及 `std::pair` 中的两个元素。
注意,在使用 `std::pair` 存放不同类型的对象时,需要按照顺序指定它们的类型。在本例中,`double` 类型的对象是第一个,`Eigen::Isometry3d` 类型的对象是第二个。
std::pair存放eigen::isometry
可以使用 `std::pair` 存放 `Eigen::Isometry3d` 类型的对象,用法如下:
```cpp
#include <iostream>
#include <utility>
#include <Eigen/Geometry>
int main() {
Eigen::Isometry3d T1 = Eigen::Isometry3d::Identity();
Eigen::Isometry3d T2;
T2.linear() = Eigen::Quaterniond(0.707, 0, 0.707, 0).toRotationMatrix();
T2.translation() << 1, 2, 3;
std::pair<Eigen::Isometry3d, Eigen::Isometry3d> pair(T1, T2);
std::cout << "T1: " << std::endl << T1.matrix() << std::endl;
std::cout << "T2: " << std::endl << T2.matrix() << std::endl;
std::cout << "pair.first: " << std::endl << pair.first.matrix() << std::endl;
std::cout << "pair.second: " << std::endl << pair.second.matrix() << std::endl;
return 0;
}
```
在上述示例中,首先定义了两个 `Eigen::Isometry3d` 类型的对象 `T1` 和 `T2`,然后使用 `std::pair` 存放这两个对象,最后输出这两个对象以及 `std::pair` 中的两个元素。
注意,在使用 `std::pair` 存放 `Eigen::Isometry3d` 类型的对象时,需要包含头文件 `<Eigen/Geometry>`。另外,在输出 `Eigen::Isometry3d` 类型的对象时,可以使用 `matrix()` 方法将其转化为矩阵形式输出。
阅读全文