将项目插入std :: map时出错

时间:2018-03-25 12:09:40

标签: c++ dictionary clion

我试图只使用自定义键和值类型向地图插入新项目:

struct Address {
    bool operator<(const Address& a) const { return 1; }
};
struct Cell {};

std::map<Address, Cell> map;
map.insert(std::make_pair<Address, Cell>(Address(), Cell()));

G ++编译得很好,但我的IDE(CLion)抱怨插入方法的参数(用红色下划线标记为错误):参数类型不匹配:类&#39; std :: pair&lt; Address ,Cell&gt;&#39;与类&st; :: initializer_list&lt; std :: map&lt; main :: Address,main :: Cell&gt;&gt; :: value_types&gt;&#39; 不兼容。

为什么我收到此错误?我的代码有问题吗?或者它是IDE中的错误?

1 个答案:

答案 0 :(得分:-2)

您可以使用std::vector代替std::map宽度std::pair
要解决问题更改:

std::map<Address, Cell> map;

为:

std::vector<std::pair<Address, Cell> > map;

并包含矢量库

#include <vector>