在具有 std::p air 键和值的映射中添加 b2vec2

Adding a b2vec2 in a map with std::pair key and value

本文关键字:映射 b2vec2 添加 键和值 air std      更新时间:2023-10-16

当我尝试向地图添加元素时出现错误,这是我的简化代码:

我有一张地图:

std::map<std::pair<std::string, std::pair<int, b2Vec2> >, std::pair<std::string, std::pair<int, b2Vec2> > > myMap; `  
b2Vec2 rVec (1, 1)  
std::pair<std::string, std::pair<int, b2Vec2> > partA (std::make_pair ("test", std::make_pair(1, rVec ) ) );  
std::pair<std::string, std::pair<int, b2Vec2> > partB (std::make_pair ("testb", std::make_pair(1, rVec ) ) );` 
myMap[partA] = partB; //When I add this line i get an error when compiling.`

我收到错误:"二进制表达式的操作数无效('const b2Vec2' 和 'const b2Vec2'(。 如果我在定义和初始化中将每个 b2Vec2 类型替换为 int 类型myMap它就可以工作。所以我认为 b2Vec2 只有一个问题,但我不明白。

std::map中用作键的类型需要为其定义小于比较运算符 (operator<(。std::pair定义了其中之一,这需要为对中的类型定义operator<

在您的情况下,您会收到编译错误,因为b2Vec2类型未定义operator<