当我尝试向我的 map 添加元素时出现错误,这是我的简化代码:
我有一张 map :
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')。”
如果我在 myMap
定义和初始化中用 int 类型替换每个 b2Vec2 类型,它就可以工作。所以我认为 b2Vec2 只是一个问题,但我不明白。
最佳答案
在 std::map
中用作键的类型需要为其定义一个小于比较运算符 ( operator<
)。 std::pair
定义其中之一,这需要 operator<
为对中的类型定义。
在您的情况下,您会收到编译错误,因为 b2Vec2
类型未定义 operator<
.
关于c++ - 在具有 std::pair 键和值的映射中添加 b2vec2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45850143/