gpt4 book ai didi

c++ - 为什么 STL 在查找时会映射核心转储?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:12 25 4
gpt4 key购买 nike

所以,在这种情况下,我需要查看一个对象是否在我的 STL 映射中。如果不是,我将添加它。

char symbolName[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
map<string,TheObject> theMap;
if (theMap.find(symbolName)==theMap.end()) {
TheObject theObject(symbolName);
theMap.insert(pair<string, TheObject>(symbolName,
theObject));
}

当对象不在 map 中时,我在 theMap.find 上获取核心转储。据推测,如果该项目不在 map 中,它应该返回一个迭代器,相当于 map::end

这是怎么回事?

海湾合作委员会:3.4.6

最佳答案

由于多种原因,它可能会崩溃。在不知道至少 TheObject 的构造函数的定义的情况下,我认为我们在很大程度上只能靠猜测来解决这个问题。到目前为止,您的代码看起来不错,但可以简化:

char symbolName[] = "Hello";
map<string,TheObject> theMap;
theMap.insert(make_pair(symbolName, TheObject(symbolName)));

如果符号已经映射,它不会做任何事情,丢弃新的 TheObject 对象。

关于c++ - 为什么 STL 在查找时会映射核心转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/481119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com