Effective_STL 学习笔记(十三) 尽量使用 vector 和 string 来代替动态分配的数组

 

无论何时,准备动态分配一个数组,应该首先考虑使用一个 vector 或一个 string,vector 和 string 管理自己的内存,当元素添加到容器时,他们的内存会增长,而且当一个 vector 或 string 销毁时,它的析构函数会自动销毁容器中的元素,回收存放那些元素的内存。

 

vector 和 string 时羽翼丰满的序列容器,STL 算法,begin()、end()和size()等成员函数。

把 vector 和 string  中的数据传给需要 array的API很简单。

能想到的一个用 vector 和 string 代替动态数组会出现的问题是,很多 string 后台使用了引用计数。

 

如果用到的 string 实现是引用计数的,已经确定 string 的引用计数支持是一个性能问题的多线程环境中运行,可以有至少三个合理的选择:

  1. 看库实现是否可以关闭引用计数,通常是通过改变预处理量的值;

  2. 寻找或开发一个不适用引用计数的 string 实现替代品;

  3. 考虑使用 vector<char> 来替代 string,这样放弃了string的专有成员函数,

   但大部分功能仍然可以通过STL算法实现。

 

所以结论是:如果你在使用动态分配数组,你可能要做更多工作。要减轻你的负担,要总是考虑使用 vector 和string 来代替

转载于:https://www.cnblogs.com/kidycharon/p/10005911.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值