我已经声明了一个这样的地图
map<long long, list<SoundInfo *> > m_soundListMap;
我也有这个功能
void addSoundInfo(long long deviceId, SoundInfo * info)
我正在尝试将与设备id相关联的声音信息作为关键字添加到地图中。在这个函数中,我假设已经向映射中添加了一个键和值对。这样我就可以检索声音信息的列表,并将传入的声音信息添加到列表的后面。
我希望在map没有键的情况下捕获一个异常,然后我可以创建键和值对并插入到map中。
如何在C++中捕获此异常?
先谢谢你...
发布于 2011-06-23 13:55:34
如果我试图获取列表,但地图没有密钥,会发生什么?
这取决于您如何尝试获取该项目。
list<SoundInfo*>& info_list = m_soundListMap[55];
将创建一个空列表,将其插入到映射中,并在键还不存在时返回该列表。
typedef map<long long, list<SoundInfo *> >::iterator iterator;
iterator iter = m_soundListMap.find(55);
将返回同时包含键和值的对的迭代器,如果键不存在,则返回map::end()
。iter->second
将成为您的list<SoundInfo*>
。
发布于 2011-06-23 13:52:03
std::map::operator[]
返回对具有指定键的条目的引用;如果不存在这样的条目,则插入一个新条目(具有指定的键和默认构造的值),并返回对该条目的引用。当内存分配失败(std::bad_alloc
)时,它会抛出异常。
听起来你可能会发现a good introductory C++ book很有用。
发布于 2011-06-23 13:53:48
使用检查map是否已经有任何值与特定键相关联。
https://stackoverflow.com/questions/6449831
复制相似问题