问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++ STL vector erase函数中,有没有重新分配内存?

发布网友 发布时间:2022-04-23 05:01

我来回答

1个回答

热心网友 时间:2023-08-18 23:17

没有重新分配。但是后续的元素被往前移动,因此被删除的元素之后的迭代器会失效。例如,下面的代码在debug模式下将会崩溃,在release模式下正常运行而且可以看到数组的地址并没有改变。

#include <vector>
#include <iostream>

int main(){
    std::vector<int> v{ 1, 2, 3, 4, 5, 6, 7 };
    auto p = v.end() - 2;

    std::cout << &v[0] << "\t" << *p << "\t" << &*p << "\n";
    v.erase(v.begin() + 2);
    std::cout << &v[0] << "\t" << *p << "\t" << &*p << "\n";

    return 0;
}


v.swap(vector<T>(v));将v复制到新的向量中(这个向量的容量正好和v的大小一样),然后与v进行交换。因为这是一个局部变量,所以这句话结束时会将从v处获得的内存释放。同时,v在交换之后,容量和大小一致。

建议你看一下源代码,或者单步调试看看具体的执行过程。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
呼吸的反义词是什么意思? 黄德龙江西上饶人 现在什么手机卡优惠 ...后电话也不会少。主叫需要400分钟。我使用啥卡好?谢谢 我的配置能不能玩极品飞车9吗 极品飞车9我的笔记本带的动么 我家电脑能完极品飞车9吗 我的电脑能玩极品9吗? 冈崎片段信息简介 DNA复制完后,后随链的冈崎片段是留在后随链上还是被切去 C++中A是字符串,A.erase(0,1)是什么意思? C++关于vector的erase函数的问题 C++ STL 中 remove 和 erase 的区别 string类中erase函数的实现怎样的 c语言字符串删除 编程自定义一个删除函数:erase(),要求对其进行重载,既能删除一维 erase()函数对器皿干了啥 我是个C++菜鸟。我想问一下,c++ string类中的erase()函数怎么用的 最好可以举例说明一下 有关于C++中string的erase函数的问题 C++中的erase操作 C++:erase删除容器中元素 C++ STL中erase函数的用法 求助~~ C++erase的问题 C++erase函数的使用 C++中string中的erase函数怎么使用 JAVA语言的特点? 为什么我的电脑连接上了打印机,打印机却不能打印 什么是承兑汇票贴现? 激光打印机和喷墨打印机的区别是什么? JAVA中的从键盘输入数据的语句格式是什么? c++如何删除一个数组中的重复元素 c++ 里面的erase()和insert()的问题。 C++高手啊,过来帮帮忙吧,vector里面的函数erase怎么用的?你们看我的这个为什么就有错误呢?? 椰子肉怎么吃呢? 椰子肉的正确吃法是什么? 三年级给校长的一封信怎么写 给校长的一封信500字表达自己对学校感谢之情和美好祝愿! 给校长的一封信(建议书) 要有格式,500字以上!! 这是作业紧急!!!_百度... 作文给校长的一封信 椰子肉怎么吃? 给校长的一封信400字作文 椰肉可以怎么吃? 给校长的一封信(意见书)300字左右 椰肉怎么吃吗? 一位即将毕业的小学生给中学校长的一封信 致校长的一封信作文怎么写? 一位即将毕业的小学生给中学校长的一封信 作文 急!!! 给校长的一封信 作文 给校长的一封信 写烦恼的作文 谁能给我 给校长的一封信 这篇作文啊 要口水话多点的,作文几乎能用在所有的学校。我下学期开校初2