15. 注意string实现的多样性
几乎每个string的实现都包括如下信息:
- 字符串的大小(size()),即它所包含的字符的个数。
- 用于存储该字符串中字符的内存的容量(capacity())。
- 字符串的值(value),即构成该字符串的字符。
- 它的分配子的一份拷贝。这个字段是可选的。
- 对值的引用计数。
下面是常见的4中实现方式:
不同的实现以不同的方式利用了这些涉及上的灵活性。总结这些区别如下:
- string的值可能会被引用计数,也可能不会。很多实现在默认情况下会使用引用计数,但它们通常提供了关闭默认选择的方法,往往是通过预处理宏带来做到这一点。只有当字符串被频繁拷贝时,引用计数才有用,而有些应用并不经常拷贝内存,这就不值得使用引用计数了。
- string对象大小的范围可以是一个char*指针的的大小的1倍到7倍。
- 创建一个新的字符串值可能需要零次、一次或者两次动态分配内存。
- string独享可能共享,也可能不共享其大小和容量信息。
- string可能支持,也可能不支持对单个对象的分配子。
- 不同的实现对字符内存的最小分配单位有不同的策略。
15. 注意string实现的多样性相关推荐
- effective stl 条款15 小心string实现的多样性
实际上每个string实现都容纳了下面的信息: ● 字符串的大小,也就是它包含的字符的数目. ● 容纳字符串字符的内存容量.(字符串大小和容量之间差别的回顾,参见条款14.) ● 这个字符串的值,也就 ...
- [2013.9.15]关于string::nops为什么是-1
const size_t string::nops = -1; 大家可能看到这条定义有些疑惑 为什么找不到字符串要返回-1呢 size_t是unsigned int类型 -1是int类型 那么同等大小 ...
- Effective STL 50条有效使用STL的经验笔记
Scott Meyers大师Effective三部曲:Effective C++.More Effective C++.Effective STL,这三本书出版已很多年,后来又出版了Effective ...
- ###《Effective STL》--Chapter2
点击查看Evernote原文. #@author: gr #@date: 2014-09-15 #@email: forgerui@gmail.com Chapter2 vector和string T ...
- c 串转string_string::c_str()、string::c_data()及string与char *的正确转换
string::c_str的介绍: c_str函数的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程. c++语言提供了两种字符串实现 ...
- c 串转string_c++ 中 char 与 string 之间的相互转换问题
string::c_str().string::data()的区别: const value_type *c_str( ) const; const value_type *data( ) const ...
- C++中有string类,string是一个类不是一种类型,c语言中没有
前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱的string find 函数 1.3 string insert, replace, er ...
- STL中map和string, vector 用法详解
1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...
- C++ string 用法详解(转)
C++ string 详解 任何人对本文进行引用都要标明作者是Nicolai M.Josuttis /// C++ 语言是个十分优秀的语言,但优秀并不表示完美.还是有许多人不愿意使用C或者C++,为什 ...
- 详细解说STL string
详细解说STL string 详细解说STL string 0 前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱的string find 函 ...
最新文章
- 关于大家对Swin Transformer的魔改论文模型记录(只关注Swin是如何使用的)
- Azure SQL 数据库最新版本现已提供预览版
- javascript运算符_JavaScript中的按位运算符
- Spring核心组件的理解
- Android OkHttp经验小结
- 介绍计算机的英文文章,计算机方面的英语资料,介绍一些计算机的英语短文,有兴趣的可以看...
- rabbitmq的通配符模式(Topic Exchange)的*和#区别
- 下列哪个python语句是正确的_Python笔试面试题_牛客(待完善)
- Leetcode 刷题笔记(三) —— 数组类型解题方法三:滑动窗口
- Spring源码之ApplicationContext(一)
- 加密算法(二)——MD5,Base64,DES,RSA加密算法解析
- 《算法图解》第九章 动态规划
- weblogic查看版本号教程
- Tab Layout教程
- linux 查看 文件夹代销,速达常见问题集
- java poi读取excel数据_java 使用POI读取excel数据
- android回溯机制,Android事件分发机制全面解析
- python函数增强代码可读性_如何提高代码的可读性 学习笔记
- html标签的多级列表,word如何将标题样式关联多级列表
- 动态规划 HDU 1493 QQpet