因此,在这种情况下,我需要查看对象是否在我的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的迭代器

这里发生了什么?

GCC:3.4.6

最佳答案

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

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

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

09-06 11:59