我在我的项目中有很少的地图,我不知道如何使用,或者简单地说:我不知道如何从地图中找到一些信息,地图上有类。
My代码(item.h):
#ifndef ITEM_H
#define ITEM_H
class Item
{
public:
int level, durability, damage, armor, weight, grade, sex;
Item(int _level, int _durability, int _damage, int _armor, int _weight, int _grade, int _sex);
Item();
virtual ~Item();
protected:
private:
};
#endif // ITEM_H代码(item.cpp):
#include "include/Item.h"
Item::Item(int _level, int _durability, int _damage, int _armor, int _weight, int _grade, int _sex)
{
level = _level;
durability = _durability;
damage = _damage;
armor = _armor;
weight = _weight;
grade = _grade;
sex = _sex;
}
Item::Item(): level(0), durability(20), damage(0), armor(0), weight(1), grade(1), sex(0)
{
//dtor
}
Item::~Item()
{
//dtor
}代码(main.cpp):
std::map<std::string, Item> item;
// level, durability, damage, armor, weight, grade, sex
item.insert(std::pair<std::string, Item>("Wooden Sword", Item(1, 19, 3, 0, 1, 1, 0)));如何从地图中从选定的数组中获取一些信息?尝试在google中搜索,等等。如果我尝试这样的东西,找不到答案和解释为什么我会出错:
cout << item["Wooden Sword"]["level"];为了什么目的,您可以使用item.find("Wooden Sword"); ?,映射如何与类一起工作?如何从有类的映射中选择数据。非常感谢。希望我解释了我想要的,给了你你所需要的一切。
发布于 2014-01-17 08:11:52
索引运算符返回对数据元素的引用,在您的示例中,它返回用作正常结构的Item&:
std::cout << item["Wooden Sword"].level << '\n';至于find函数,它返回一个迭代器。如果你不知道迭代器,那就先研究它们。
如果你想要一个很好的参考资料,请参见本站。
发布于 2014-01-17 08:13:52
使用item.find("Wooden Sword");,您可以获得匹配的键/值对元素的iterator。如果没有像“木剑”那样的键,它会返回end(item);。如果您不知道该项目是否存在,并且不想添加该项,请使用find。
auto it = item.find("Wooden Sword");
if (it != end(item))
{
std::cout << it->level; // use the -> operator
// std::string key = it.first;
// Item& item = it.second;
}
else
std::cout << "There is no Wooden Sword";[]运算符返回对匹配项的引用。如果没有与此键关联的项,则将在此位置插入一个新项。
std::cout << item["Wooden Sword"].level;https://stackoverflow.com/questions/21180802
复制相似问题