C++ Vector pop_back与clear的还有没有其他的区别???

时间:2021-05-10 04:21:54
pop_back是删除最后一个元素;clear是清除所有元素
请问:除了这点区别,还有其他的区别吗?

经本人测试,调用这两个函数时,元素的析构函数都会执行,不知道还有没有其他的区别

9 个解决方案

#1


你试一下size会不会变化?

#2


这两个的区别还不够大?

#3


完全就是两个不同功能的函数嘛

#4


再说你是怎么测试的?你移除里面的元素,销毁对象的时候那不就调用析构函数嘛

#5


区别就是一次只删最后一个元素和一次全删了的区别,其他没区别了,vector的容量是不会变化的

#6


pop_back之后vector容量会减少的吧

std::vector::pop_back
void pop_back();
Delete last element
Removes the last element in the vector,  effectively reducing the container size by one.

This destroys the removed element.

#7


lz说的是删除元素的方式:
clear:最终是调用_Dest_val
pop_back:调用的也是 _Dest_val
所以没啥区别,要说区别:
clear:删除了vector中的所有元素。
pop_back:只是删除了尾部的元素,当然如果只有一个元素的话,2者就完全一样了。

建议lz看看源码,不要纠结这个东西。

#8


引用 6 楼 wo__shi_sha_bi 的回复:
pop_back之后vector容量会减少的吧

std::vector::pop_back
void pop_back();
Delete last element
Removes the last element in the vector,  effectively reducing the container size by one.

This destroys the removed element.


size 会变。但是 capacity 不一定会变。

#9


调用析构而不释放内存。

#1


你试一下size会不会变化?

#2


这两个的区别还不够大?

#3


完全就是两个不同功能的函数嘛

#4


再说你是怎么测试的?你移除里面的元素,销毁对象的时候那不就调用析构函数嘛

#5


区别就是一次只删最后一个元素和一次全删了的区别,其他没区别了,vector的容量是不会变化的

#6


pop_back之后vector容量会减少的吧

std::vector::pop_back
void pop_back();
Delete last element
Removes the last element in the vector,  effectively reducing the container size by one.

This destroys the removed element.

#7


lz说的是删除元素的方式:
clear:最终是调用_Dest_val
pop_back:调用的也是 _Dest_val
所以没啥区别,要说区别:
clear:删除了vector中的所有元素。
pop_back:只是删除了尾部的元素,当然如果只有一个元素的话,2者就完全一样了。

建议lz看看源码,不要纠结这个东西。

#8


引用 6 楼 wo__shi_sha_bi 的回复:
pop_back之后vector容量会减少的吧

std::vector::pop_back
void pop_back();
Delete last element
Removes the last element in the vector,  effectively reducing the container size by one.

This destroys the removed element.


size 会变。但是 capacity 不一定会变。

#9


调用析构而不释放内存。