在我的头文件中,我正在声明这样的地图:
std::map<LPD3DXSPRITE, LPDIRECT3DTEXTURE9> sprites;
在我的C ++文件中,我试图像这样插入:
sprites.insert(sprite, texture);
我传递给sprites.insert的类型是正确的。为什么我不能这样插入?插入的正确方法是什么?当我这样做时,我得到的错误是这样的(剪断):
错误C2664: “的std :: _树&LT; _Traits&GT; ::迭代 的std :: _树&LT; _Traits&GT; ::插入件(STD :: _树&LT; _Traits&GT; ::迭代器,常量 的std ::对&LT; _Ty1,_Ty2&GT; &amp;)':不能 从中转换参数1 'LPD3DXSPRITE'来 '的std :: _树&LT; _Traits&GT; ::游标'
答案 0 :(得分:10)
您需要将您的密钥和值包装在std::pair
对象中:
sprites.insert(std::make_pair(sprite, texture));
这是因为std::map
是Pair Associative Container。 value_type
的{{1}}为std::map<K,V>
。
答案 1 :(得分:3)
或者,您可以使用operator[]
。对于std :: map,这将为您autovivify。根据您的操作,可能会调用std :: map :: insert。