STL容器中 存放指针与对象区别 遍历删除与释放操作

本文探讨了C++中STL容器存放指针与对象的差异。当对象复杂度高,拷贝代价大时,使用指针可以避免拷贝开销,但需自行管理内存。若对象简单,直接存放对象更合适。智能指针可兼顾效率与内存管理。STL在遍历删除元素时,需要手动释放内存,且释放顺序为先delete后erase。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

~~~~我的生活,我的点点滴滴!!                  

            c++中我相信大家经常要用到STL里面的各种容器来存放自己的数据,既然我们用的这么频繁那么就相应该有一些疑问?

 1.容器里面什么时候应该存指针?
 2.容器里面什么时候应该存对象?
 3.容器怎么在遍历的时候删除某元素?
 4.容器应该怎么释放掉?


 一.分析一下STL里面工作方式
              对于内建类型(int float char等),容器的工作方式是纯粹的位拷贝,这里没有什么需要多说的。
对于自定义的对象,容器容纳了对象(比如通过insert或push_back等),但容器中存放的对象不是你给它们的那个对象,因为两个对象在内存中的位置不一样。此外,当你从容器中获取一个对象时,你所得到的对象不是容器里的那个对象。取而代之的是,当你向容器中添加一个对象(比如通过insert或push_back等),进入容器的是你指定的对象的拷贝。拷进去,拷出来。拷贝是STL的方式。可以通过自己写一个例子打印出地址来看。


二.存放对象的情况
             明白了容器的工作方式,那么进一步来讨论容器存放对象和指针在操作过程中的开销。内建类型的数据进行拷贝的方式是位拷贝,自定义类型的数据进行拷贝会调用类的拷贝构造函数,这个函数是每个类都有的,如果类中没有显式的声明那么编译器也会给提供一个默认的拷贝构造函数。如果一个类的数据非常多,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值