在具有 std::p air 键和值的映射中添加 b2vec2
Adding a b2vec2 in a map with std::pair key and value
当我尝试向地图添加元素时出现错误,这是我的简化代码:
我有一张地图:
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<
。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++映射分割错误(核心转储)
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 在未初始化映射的情况下,将值插入到映射的映射中
- QT通过C++添加映射QML项目
- 在c++中访问int到类对象的映射时出错
- 在C++中搜索嵌套多映射值
- 错误处理.将系统错误代码映射到泛型
- C++匿名结构作为std::映射值
- 如何从存储在std::映射中的std::集中删除元素
- 递归无序映射
- 在具有 std::p air 键和值的映射中添加 b2vec2