zoukankan      html  css  js  c++  java
  • 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 来代替

  • 相关阅读:
    高可用性GRE+IPSEC中心—分支
    高可用性GRE+IPSEC中心—分支
    高可用性GRE+IPSEC中心—分支
    mysql数据库移植
    mysql数据库移植
    mysql数据库移植
    mysql数据库移植
    Linux 查看进程资源--ps、top命令
    比特币底层设计剖析
    比特币的P2P网络协议
  • 原文地址:https://www.cnblogs.com/kidycharon/p/10005911.html
Copyright © 2011-2022 走看看