Som*_*ken 5 c++ struct dictionary
所以,我得到了这个:
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;
Run Code Online (Sandbox Code Playgroud)
现在,将调用一个函数,该函数将使用此结构在映射中创建一个条目,该结构将设置一些默认值:
PeopleMap[counter].isWorking = false;
PeopleMap[counter].name = "Mr";
PeopleMap[counter].age = 1;
PeopleMap[counter].height = 1.60f;
counter++;
Run Code Online (Sandbox Code Playgroud)
现在,这个函数应该为新人创建一个条目,但是,在整个脚本中,我将删除一些条目,所以如果我有 5 个元素,并且我删除第二个元素,那么,我想编辑地图上的每个人:
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;
}
Run Code Online (Sandbox Code Playgroud)
现在,由于某种原因它仍在编辑所有条目,我是否需要使用 new 为每个条目创建一个结构?
PeopleMap.end()不返回有效的参数,它就像一个幽灵节点。
例如,在地图中迭代的一种方法可以是:
for(std::map<uin64, People_Info>::iterator it = PeopleMap.begin();it != PeopleMap.end() ;it++)
Run Code Online (Sandbox Code Playgroud)
看,PeobleMap最后就像一个幽灵节点,表示你已经到达终点了。在前面的内容中for,如果您想访问地图值,您可以执行以下操作:
it->first // uint64
it->second.isWorking
Run Code Online (Sandbox Code Playgroud)
因此,如果您使用迭代器,则不必检查已删除的值,并且可以编辑映射中每对中的参数(较少的键)
| 归档时间: |
|
| 查看次数: |
24637 次 |
| 最近记录: |