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

Chr*_*ris 3 c++

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

std::map<LPD3DXSPRITE, LPDIRECT3DTEXTURE9> sprites;
Run Code Online (Sandbox Code Playgroud)

在我的C++文件中,我试图像这样插入:

sprites.insert(sprite, texture);
Run Code Online (Sandbox Code Playgroud)

我传递给sprites.insert的类型是正确的.为什么我不能这样插入?插入的正确方法是什么?当我这样做时,我得到的错误是这样的(剪断):

错误C2664: '的std :: _树<_Traits> ::迭代器的std :: _树<_Traits> ::插入(STD :: _树<_Traits> ::迭代器,常量性病::对<_Ty1,_Ty2>&)':无法将参数1从'LPD3DXSPRITE'转换为'std :: _ Tree <_Traits> :: iterator'

Cha*_*via 10

您需要将键和值包装在std::pair对象中:

sprites.insert(std::make_pair(sprite, texture));
Run Code Online (Sandbox Code Playgroud)

这是因为std::map是一个Pair关联容器.的value_typestd::map<K,V>std::pair<const K,V>.