gpt4 book ai didi

c++ - 这种从堆栈中删除元素的方法如何工作?

转载 作者:太空狗 更新时间:2023-10-29 20:47:23 25 4
gpt4 key购买 nike

我刚开始在我本地的大学上 C++ 课,老师给类(class)布置了一个作业,我们必须在其中创建一个 vector 并从堆栈中间删除一个元素。

她提供了这个例子:

vect[3] = vect[vect.size()-1];
vect.pop_back();

现在.. 我已经测试过它并且它可以工作 我只是不确定它是如何工作的或者它为什么工作。我确定有人可以提供一个简单的解释?

最佳答案

你想从 vector 的中间删除一个元素,所以你只需用最后一个元素覆盖它(索引 size()-1)——因为最后一个元素因此变得多余,我们可以 pop_back() 它。最终我们得到了想要的结果 - vector 大小减少了 1,vect[3] 中的旧值消失了。

请注意,这不会保留 vector 中元素的顺序,但它相对有效 - 从 vector 中间删除可能涉及大量内存复制,因为所有元素都在要删除的元素需要移动一个以适应间隙(记住:std::vector 将其元素存储在连续存储中)。从末尾删除几乎不需要任何费用。

关于c++ - 这种从堆栈中删除元素的方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com