首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何捕获由std::map引起的异常?

如何捕获由std::map引起的异常?
EN

Stack Overflow用户
提问于 2011-06-23 13:47:44
回答 5查看 5.3K关注 0票数 0

我已经声明了一个这样的地图

代码语言:javascript
运行
复制
map<long long, list<SoundInfo *> > m_soundListMap;

我也有这个功能

代码语言:javascript
运行
复制
void addSoundInfo(long long deviceId, SoundInfo * info)

我正在尝试将与设备id相关联的声音信息作为关键字添加到地图中。在这个函数中,我假设已经向映射中添加了一个键和值对。这样我就可以检索声音信息的列表,并将传入的声音信息添加到列表的后面。

我希望在map没有键的情况下捕获一个异常,然后我可以创建键和值对并插入到map中。

如何在C++中捕获此异常?

先谢谢你...

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-06-23 13:55:34

如果我试图获取列表,但地图没有密钥,会发生什么?

这取决于您如何尝试获取该项目。

代码语言:javascript
运行
复制
list<SoundInfo*>& info_list = m_soundListMap[55];

将创建一个空列表,将其插入到映射中,并在键还不存在时返回该列表。

代码语言:javascript
运行
复制
typedef map<long long, list<SoundInfo *> >::iterator iterator;
iterator iter = m_soundListMap.find(55);

将返回同时包含键和值的对的迭代器,如果键不存在,则返回map::end()iter->second将成为您的list<SoundInfo*>

票数 2
EN

Stack Overflow用户

发布于 2011-06-23 13:52:03

std::map::operator[]返回对具有指定键的条目的引用;如果不存在这样的条目,则插入一个新条目(具有指定的键和默认构造的值),并返回对该条目的引用。当内存分配失败(std::bad_alloc)时,它会抛出异常。

听起来你可能会发现a good introductory C++ book很有用。

票数 4
EN

Stack Overflow用户

发布于 2011-06-23 13:53:48

使用检查map是否已经有任何值与特定键相关联。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6449831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档