为什么我的插入到std :: map失败了?

时间:2009-11-24 00:11:45

标签: c++

在我的头文件中,我正在声明这样的地图:

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; ::游标'

2 个答案:

答案 0 :(得分:10)

您需要将您的密钥和值包装在std::pair对象中:

sprites.insert(std::make_pair(sprite, texture));

这是因为std::mapPair Associative Containervalue_type的{​​{1}}为std::map<K,V>

答案 1 :(得分:3)

或者,您可以使用operator[]。对于std :: map,这将为您autovivify。根据您的操作,可能会调用std :: map :: insert。