目前我遇到了我的代码问题。我尝试了一切。 image is here 我希望有人能帮助我:)。顺便说一句我是新来的C++C++ SFML从地图返回所有精灵
回答
#include <SFML\Graphics.hpp>
std::map<std::string, sf::Sprite> sprites;
void addSprite(std::string sprite_name, sf::Texture sprite_texture) {
sf::Sprite sprite;
sprite.setTexture(sprite_texture);
sprites[sprite_name] = sprite;
}
sf::Sprite getSprite(std::string sprite_name) {
return sprites[sprite_name];
}
std::vector<sf::Sprite> getSprites() {
std::vector<sf::Sprite> sprites_c2;
for each (sf::Sprite sprite in sprites.value_comp) {
sprites_c2.emplace_back(sprite);
}
return sprites_c2;
}
您可能想在下次编辑原始帖子;这部分是为了试图回答你的问题的人。 – pie3636
for each
是无效的C++;首先是C++ 11,正确的表达是 for (<type> <variable> : <collection>)
在这里,你也试图通过sprites.value_comp
访问元素的集合,这是一个功能,没有意义在这里。
假设sprites
是std::set
容器,你可以迭代它是这样的:如果你使用的是std::map
代替
for (auto sprite : sprites) {
// sprite is the value you're looking for
}
,使用相同的循环,但sprite
不会包含您的sf::Sprite
但它的关键,您将需要使用sprite.second
来访问精灵。
请注意,auto
关键字可让编译器确定变量的类型。
如果你的编译器不支持C++ 11,你需要做这样的事情,而不是:
std::set<sf::Sprite>::iterator it;
for (it = sprites.begin(); it != sprites.end(); ++it)
{
// Access each sprite using *it (the star is necessary here)
}
随着std::map
:
// Replace "keyType" with the type of the keys, such as int or std::string
std::map<keyType, sf::Sprite>::iterator it; for (it = sprites.begin(); it != sprites.end(); ++it)
{
// Access each sprite using it->second
}
如果你只是想转换您的std::set
转化为std::vector
,但是,有更简单的方法可以做到这一点:
std::vector <sf::Sprite> sprites_c2;
std::copy(sprites.begin(), sprites.end(), std::back_inserter(sprites_c2));
对于std::map
没有任何单行版本,因此您将不得不按照上面所述重复循环。
非常感谢。 –
请注意,有一种更简单的方法,假设你只是试图将'std :: set'转换为'std :: vector':只需创建一个空向量并添加'std :: copy(sprites.begin (),sprites.end(),std :: back_inserter(sprites_c2)); ' – pie3636
- 1. C++ SFML - 如何使弹跳精灵?
- 2. 从精灵矢量绘制SFML
- 3. SFML 2.1如何让一个精灵面对另一个精灵
- 4. SFML中的可拖动精灵
- 5. 如何动画所有精灵图片?
- 6. 从纹理地图集创建精灵
- 7. C++从矢量中的类返回精灵对象
- 8. Phaser精灵地图定位
- 9. 试图使用SFML中的精灵和纹理继承
- 10. css精灵或图像地图?
- 11. 如何返回地图中所有键的所有地址值
- 12. 如何让精灵从精灵表变成另一个精灵?
- 13. 从精灵表
- 14. XNA捕捉精灵到瓷砖地图
- 15. 使用gdk_pixbuf_composite()的精灵地图问题
- 16. 在瓷砖地图上绘制精灵
- 17. Cocos2d平铺地图添加精灵
- 18. 指南针精灵地图变量名?
- 19. CSS图像精灵
- 20. CSS图像精灵
- 21. 如何一次移动所有的精灵:Cocos2dx v3 C++
- 22. 如何获得精灵的实际位置并以C++和sfml格式打印
- 23. SFML 2.0使精灵循环显示不止一次
- 24. 如何在SFML中为精灵创建动画
- 25. 在SFML使用字体精灵表的字体2.4
- 26. sfml - vector [0] .getPosition()返回0
- 27. SFML rendertexture不返回纹理
- 28. 无法删除精灵容器的所有图像
- 29. 从CCSpriteBatchNode更改精灵贴图
- 30. 从精灵图像生成动画?
Give [this](http://stackoverflow.com/questions/110157/how-to-retrieve-all-keys-or-values-from-a-stdmap)一看 – pie3636
你能告诉我什么是错的在我的代码? –
您正在遍历sprites.comp_value,它是地图中精灵的比较函数,在此上下文中没有意义。我建议尝试:'for(auto sprite:sprites)'这将遍历键。然后您可以使用'sprite.second'访问这些值。这假设你正在使用STL地图容器。 – pie3636