首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >map<string,class>使用和侦察

map<string,class>使用和侦察
EN

Stack Overflow用户
提问于 2014-01-17 08:06:13
回答 2查看 90关注 0票数 0

我在我的项目中有很少的地图,我不知道如何使用,或者简单地说:我不知道如何从地图中找到一些信息,地图上有类。

My代码(item.h):

代码语言:javascript
复制
    #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):

代码语言:javascript
复制
#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):

代码语言:javascript
复制
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中搜索,等等。如果我尝试这样的东西,找不到答案和解释为什么我会出错:

代码语言:javascript
复制
cout << item["Wooden Sword"]["level"];

为了什么目的,您可以使用item.find("Wooden Sword"); ?,映射如何与类一起工作?如何从有类的映射中选择数据。非常感谢。希望我解释了我想要的,给了你你所需要的一切。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-17 08:11:52

索引运算符返回对数据元素的引用,在您的示例中,它返回用作正常结构的Item&

代码语言:javascript
复制
std::cout << item["Wooden Sword"].level << '\n';

至于find函数,它返回一个迭代器。如果你不知道迭代器,那就先研究它们。

如果你想要一个很好的参考资料,请参见本站

票数 0
EN

Stack Overflow用户

发布于 2014-01-17 08:13:52

使用item.find("Wooden Sword");,您可以获得匹配的键/值对元素的iterator。如果没有像“木剑”那样的键,它会返回end(item);。如果您不知道该项目是否存在,并且不想添加该项,请使用find

代码语言:javascript
复制
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";

[]运算符返回对匹配项的引用。如果没有与此键关联的项,则将在此位置插入一个新项。

代码语言:javascript
复制
std::cout << item["Wooden Sword"].level;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21180802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档