C++ 地图<;字符串,类>;使用和整理
在我的项目中,我几乎没有地图,我不知道如何使用,或者简单地说:我不知道如何从地图中获取一些信息,地图上附有类 我的代码(项目h):C++ 地图<;字符串,类>;使用和整理,c++,class,maps,C++,Class,Maps,在我的项目中,我几乎没有地图,我不知道如何使用,或者简单地说:我不知道如何从地图中获取一些信息,地图上附有类 我的代码(项目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, in
#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
#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
}
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)));
代码(item.cpp):
#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
#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
}
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)));
代码(main.cpp):
#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
#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
}
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)));
std::映射项;
//等级、耐久性、伤害、护甲、重量、等级、性别
项目.插入(标准:成对(“木剑”,项目(1,19,3,0,1,1,0));
如何从地图中提取所选阵列的一些信息?尝试在google中搜索,等等。找不到答案和解释。如果我尝试以下内容,为什么会出现错误:
cout << item["Wooden Sword"]["level"];
cout索引运算符返回对数据元素的引用,在您的情况下,它返回一个项&
,您将其用作正常结构:
std::cout << item["Wooden Sword"].level << '\n';
std::cout使用item.find(“木剑”)
您将获得一个到匹配的键/值对元素的迭代器。如果没有像“木剑”这样的钥匙,则返回end(项目)代码>。如果不知道项目是否存在并且不想添加项目,请使用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";
item[“木剑”]
返回对与键“木剑”
关联的item
对象的引用。如果要打印该项的内容,请提供ostream&operator如果需要在运行时指定字段名,可以向项添加int&operator[](const std::string&fieldname){If(fieldname==“level”)返回级别;else If(fieldname==“耐久性”)返回耐久性;else…else抛出std::runtime_error(“unknown Item field”)}
和/或int operator[](const std::string&fieldname)const{}
。谢谢,我不认为我可以这样使用它们。