下列选项哪些是正确的

2025-09-23 17:59:07

首页

题库

面试

求职

学习

竞赛

搜索面经/职位/试题/公司

搜索

我要招人

去企业版

登录 / 注册

首页

>

试题广场

>

下列选项哪些是正确的

[单选题]

下列选项哪些是正确的

对于unordered_map和map这两个容器,迭代器的有效性皆不受删除操作影响

对于unordered_map和map这两个容器,迭代器的有效性皆不受插入操作影响

为了保证代码的异常安全性,应该避免在构造函数中抛异常

为了保证代码的异常安全性,应该避免在析构函数中抛异常

查看正确选项

添加笔记

求解答(78)

邀请回答

收藏(1297)

分享

13个回答

添加回答

2

牛客773831号

此题答案有误. 正确答案 应该为AD

map 均不受影响

对于 unordered_map, 底层是hash_table 插入元素会导致迭代器失效。

http://en.cppreference.com/w/cpp/container/unordered_map/erase

References and iterators to the erased elements are invalidated.

Other iterators and references are not invalidated.

http://en.cppreference.com/w/cpp/container/unordered_map/insert

If rehashing occurs due to the insertion, all iterators are

invalidated. Otherwise iterators are not affected. References are

not invalidated. Rehashing occurs only if the new number of elements

is greater than

max_load_factor(

)

*bucket_count(

)

.

对于被删除的元素的迭代器,都是会失效的。

编辑于 2016-04-01 17:34:07

回复(3)

58

jxzheng95

答案应该为D。

http://www.cplusplus.com/reference/map/map/erase/

查看下边iterator

validity这项。同理可以看到map的insert,unorder_map的insert和erase操作的这项属性。

A选项:当unorder_map和map某迭代器it指向的元素被删除时,只有该迭代器it失效,其他的迭代器不会失效。

B选项:map插入时不会引起迭代器失效;unorder_map插入时一般情况下不会引起迭代器失效,只有当容器增长到需要rehash时,原来的所有迭代器失效。

C选项:构造函数抛出异常后,已经构造的成员对象会被逆序析构,申请的内存资源会被系统释放,不会调用析构函数。而且构造函数抛出异常是唯一表明构造失败的方法。

D选项:effective C++“条款08:别让异常逃离析构函数”指出来如果析构函数抛出异常,对于vector这样的一个对象数组,如果第一个Widget析构有异常抛出,这时候还要销毁数组中剩下的Widget否则会造成内存泄漏,但是如果剩下的Widget析构时也抛出异常,就会两个异常同时存在,程序如果不是结束执行就会产生不明确行为。即使不是使用容器或数组,在析构函数中抛出异常也可能导致程序过早结束或不明确行为。

发表于 2016-04-22 13:50:06

回复(3)

3

淇神

都屏蔽了,你还出来

发表于 2020-05-31 16:06:45

回复(0)

3

lilinl

构造函数抛出异常后,已经构造的成员对象会被逆序析构,申请的内存资源会被系统释放,不会调用析构函数,而且构造函数抛出异常是唯一表明构造失败的方法;

发表于 2018-09-21 15:46:57

回复(0)

0

ananFF

析构函数在对象消亡时即自动被调用。可以定义析构函数在对象消亡前做善后工作。

发表于 2023-03-25 19:52:17

回复(0)

0

天尊墨宇

选D 若在析构函数中抛异常,则对象会不完全析构,会造成内存泄露问题

发表于 2020-07-18 06:48:50

回复(0)

0

牛客256313279号

什么是惜购?

发表于 2020-04-09 09:27:40

回复(0)

0

长风与你

我滚去学习了

发表于 2019-09-24 00:06:39

回复(0)

0

sky_

A.被删除的迭代器元素会失效 B.当需要再哈希时,所有迭代器失效。

发表于 2017-08-03 23:09:37

回复(0)

0

rppp

若在析构函数中抛异常,则对象会不完全析构,会造成内存泄露问题

发表于 2017-07-29 16:05:01

回复(0)

0

whcs

https://msdn.microsoft.com/zh-cn/library/windows/apps/bb982522(v=vs.120)

发表于 2016-08-04 19:52:12

回复(0)

0

沫。

正确答案是D吧! B当插入要用到rehash时,迭代器还是会失效的

发表于 2016-05-05 17:12:25

回复(0)

0

远方的范特西

http://blog.csdn.net/stpeace/article/details/46507451

map的iterator有效性受到删除的影响(见链接) 答案应该为D

编辑于 2016-04-01 17:15:07

回复(0)

这道题你会答吗?花几分钟告诉大家答案吧!

提交观点

问题信息

哈希

来自:2016乐视暑期实习生...

难度:

13条回答

1297收藏

11987浏览

热门推荐

相关试题

下列有关windows系统的EXE...

Windows

评论(10)

来自2016乐视暑期实习生招...

以下关于mysql复制关系,描述错...

数据库

SQL+MySQL

测试

后端开发

客户端开发

前端开发

人工智能/算法

数据

运维/技术支持

评论(22)

来自2016乐视暑期实习生招...

有一颗二叉树的前序遍历和后续遍历分...

评论(42)

来自2016乐视暑期实习生招...

对于根元素为最小值的二叉堆,下面说...

评论(66)

来自2016乐视暑期实习生招...

头文件已经正常包含,以下代码在VS...

C++

C语言

评论(54)

来自2016乐视暑期实习生招...

扫描二维码,关注牛客网

意见反馈

下载牛客APP,随时随地刷题

刷真题、补算法、看面经、得内推

使用第三方账号直接登录使用吧:

更多

扫一扫,把题目装进口袋

求职之前,先上牛客

扫描二维码,进入QQ群

扫描二维码,关注牛客公众号

关于我们

加入我们

意见反馈

企业服务

校企合作

联系我们

免责声明

友情链接

公司地址:北京市朝阳区北苑路北美国际商务中心K1座一层-北京牛客科技有限公司

联系方式:010-60728802

投诉举报电话:010-57596212(朝阳人力社保局)

牛客科技© All rights reserved

admin@nowcoder.com

京ICP备14055008号-4

增值电信业务经营许可证

营业执照

人力资源服务许可证

京公网安备

11010502036488号

乌拉圭世界杯名单