为了账号安全,请及时绑定邮箱和手机立即绑定

您好,c++ STL中 容器的清空(.clear())和赋值 (=) 这两个操作费时吗?

您好,c++ STL中 容器的清空(.clear())和赋值 (=) 这两个操作费时吗?

Cats萌萌 2021-10-26 19:15:58
这是相对而言啊, 像vector的插入就可能要移动元素,set的插入可能要倒转。这些就是费时的操作。而vector向后压元素,set的查找 就很快。其实我是想问 清空操作 是把所有的元素删除 释放空间;还是保留空间,下次添加元素时直接放进去,不要再申请空间了?赋值操作 是把以前的元素删除然后把新的一个一个拷进来,还是有别的更好的方法?劳烦各位了
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

清空操作是把所有的元素删除但不会释放空间的。
赋值操作就是拷贝进来。还是用clear吧。

查看完整回答
反对 回复 2021-10-31
?
千万里不及你

TA贡献1784条经验 获得超9个赞

清空操作,删除所有元素,但是内存空间保留。这里还有一点需要注意,就是当你需要对vector赋里面添加值时,vector一般都会申请一段内存,直到你用光所申请的内存。然后程序会开辟另一块连续的更大的内存,把原先内存里面的元素一个个拷贝到新开辟的内存,然后再在后面添加新元素。

赋值操作,一般来说就是删除所有元素,然后把心的一个个拷贝进来。当然效率是比较低的,这里有个效率更高的办法,如果你不需要原来vector里面的值,那你对新的vector可以调用
新vector.swap(原vector)
交换两个vector的引用,无需赋值,时间复杂度是常数级别。

查看完整回答
反对 回复 2021-10-31
  • 2 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信