In my header file, I'm declaring a map like so:
std::map<LPD3DXSPRITE, LPDIRECT3DTEXTURE9> sprites;
In my C++ file, I am trying to insert like so:
sprites.insert(sprite, texture);
The types I am passing to sprites.insert are correct. Why can I not insert this way? What is the proper way to insert? When I do this, the error I get is like this (snipped):
error C2664: 'std::_Tree<_Traits>::iterator std::_Tree<_Traits>::insert(std::_Tree<_Traits>::iterator,const std::pair<_Ty1,_Ty2> &)' : cannot convert parameter 1 from 'LPD3DXSPRITE' to 'std::_Tree<开发者_运维问答;_Traits>::iterator'
You need to wrap your key and value in an std::pair
object:
sprites.insert(std::make_pair(sprite, texture));
This is because std::map
is a Pair Associative Container. The value_type
of std::map<K,V>
is std::pair<const K,V>
.
Alternatively, you could use operator[]
. For std::map, this will autovivify for you. Depending on what you are doing, it may make calling std::map::insert unnecessary.
精彩评论