具有结构的 C++ 映射

标签 c++ dictionary struct

所以,我得到了这个:

struct People_Info {
  bool isWorking;
  std::string name;
  int age;
  float height;
};
int counter = 0;
int random = urand(1, 4);
std::map<uin64, People_Info> PeopleMap;

现在,将调用一个函数,该函数将使用此结构在映射中创建一个条目,该结构将设置一些默认值:

PeopleMap[counter].isWorking = false;
PeopleMap[counter].name = "Mr";
PeopleMap[counter].age = 1;
PeopleMap[counter].height = 1.60f;
counter++;

现在,这是应该为新人创建条目的函数,但是,在整个脚本中我将删除一些条目,所以如果我有 5 个元素,我将删除例如第二个,那么,我想编辑 map 中每个人的一些变量:

for(int i = 0; i < 5 ; i++) {
  if(PeopleMap[i] == PeopleMap.end())  // Don't edit map entries that are erased
    continue;

  PeopleMap[i].isWorking = true;
}

现在,出于某种原因它仍在编辑所有条目,我是否需要使用 new 为每个条目创建一个结构?

最佳答案

PeopleMap.end() 没有返回有效参数,它就像一个幽灵节点。

例如,在 map 中迭代的方法可以是:

for(std::map<uin64, People_Info>::iterator it = PeopleMap.begin();it != PeopleMap.end() ;it++)

看,PeobleMap 就像一个幽灵节点 in the end 表示你已经到达终点。 在前面的 for 中,如果您想访问 map 值,您可以这样做:

it->first // uint64
it->second.isWorking

因此,如果您使用迭代器,则不必检查已删除的值,并且您可以编辑映射中每对中的参数(较少的键)

关于具有结构的 C++ 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672288/

相关文章:

python - 列表字典到嵌套字典

c++ - 同名结构,不同定义 : segmentation fault with -O2

c++ - 提升 asio & ssl & 错误代码

c++ - 是否有适用于 GStreamer 的图形生成器?

C++ 函数对象模板参数推导风格

c - 我如何将函数指针传递给函数。

python - 如何在 Python 中将 256 位大端整数转换为小端?

c++ - 如何通过 C++ 找出当前用户属于哪个组?

java - 类似 Collections.rotate 的 map

python - 如何在同一词典下合并两个嵌套词典