如何打印std::vector<std::pair<cv::Mat, double>>类型,一个是2d坐标,一个是3d坐标
时间: 2024-01-20 18:02:07 浏览: 120
如果你想打印一个 `std::vector<std::pair<cv::Mat, double>>` 类型的变量,可以使用如下的代码:
```c++
#include <iostream>
#include <vector>
#include <utility>
#include <opencv2/core.hpp>
int main() {
std::vector<std::pair<cv::Mat, double>> vec = {{{1, 2}, 3.0}, {{4, 5}, 6.0}};
for (const auto& p : vec) {
std::cout << p.first << ", " << p.second << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先创建了一个 `std::vector<std::pair<cv::Mat, double>>` 类型的变量 `vec`,并且为其赋值。然后,我们使用 `for` 循环遍历这个变量,对于每个元素,我们分别打印出其 `cv::Mat` 类型的 2D 坐标和 `double` 类型的 3D 坐标。需要注意的是,这里使用了 C++11 中的花括号列表初始化来初始化 `vec` 中的元素,以及使用了 `auto` 关键字来自动推导 `for` 循环中的元素类型。
相关问题
怎么打印std::vector<std::pair<cv::Mat, double>> barycenter_history;//cv::Point2f std::vector<std::pair<cv::Mat, double>> pose_history;//cv::Point3f
您可以使用`std::cout`打印这两个向量的元素。对于每个元素,您可以使用`first`和`second`成员访问`std::pair`对象中的`cv::Mat`和`double`,然后将它们打印出来。以下是一些示例代码:
```
// 打印 barycenter_history 中的元素
std::cout << "barycenter_history:" << std::endl;
for (const auto& item : barycenter_history) {
std::cout << item.first << ", " << item.second << std::endl;
}
// 打印 pose_history 中的元素
std::cout << "pose_history:" << std::endl;
for (const auto& item : pose_history) {
std::cout << item.first << ", " << item.second << std::endl;
}
```
请注意,为了打印`cv::Mat`,您需要使用`cv::Mat`的重载运算符`<<`。
imuState<S> imu_state_; std::vector<camState<S>> cam_states_; std::vector<camState<S>> pruned_states_; std::vector<Vector3<S>, Eigen::aligned_allocator<Vector3<S>>> map_; imuState<S> imu_state_; std::vector<camState<S>> cam_states_; std::vector<camState<S>> pruned_states_; std::vector<Vector3<S>, Eigen::aligned_allocator<Vector3<S>>> map_;
这是一段 C++ 代码,其中定义了一个模板类,类名为 imuState,模板参数 S 表示数据类型。类中有四个成员变量:一个 imuState 类型的 imu_state_,一个 vector 类型的 cam_states_,一个 vector 类型的 pruned_states_,以及一个 vector 类型的 map_,其中 map_ 的元素类型为 Vector3<S>,并使用 Eigen 库的 aligned_allocator。
这个类的具体实现需要查看更多代码。
阅读全文
相关推荐















