开发者

Why is my insert into std::map failing?

开发者 https://www.devze.com 2022-12-12 02:38 出处:网络
In my header file, I\'m declaring a map like so: std::map<LPD3DXSPRITE, LPDIRECT3DTEXTURE9> sprites;

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消