1. 程式人生 > >關於std::map的錯誤

關於std::map的錯誤

想使用一個關聯容器來存放2d-3d點,最先想到的是:

std::map<cv::Point, pcl::PointXYZ> map_2d_3d;

這樣很直觀,但是不行。

no match for ‘operator<’ (operand types are ‘const cv::Point_<int>’ and ‘const cv::Point_<int>’)

根據std::map官方文件可知:

std::map is a sorted associative container that contains key-value pairs with unique keys. Keys are sorted by using the comparison function

Compare.

大概意思就是說:關鍵字的型別是需要可排序的型別。後來改成了

std::map<std::pair<int, int>, pcl::PointXYZ> map_2d_3d;

這個是沒問題的,求解。