`

【C++ Primer】第十六章 string类和标准模板库

 
阅读更多

一,string类

1)构造函数

string()

string(const char *s)

string(size_type n,char c)//包含n个元素的string 全部初始化为 c

string(const char *s,size_type n)//初始化为s指向的前n个字符

示例:


2)string类输入

C-风格字符串输入:

C++风格输入: 两个版本的getline 都有一个共同可选参数,getline(stuff,';');//结束边界

string 的getline()函数从输入中读取字符,并将其存储到string中,直到发生下列3中:遇到文件结尾、遇到分节符(\n)、读取字符数到达最大

3)使用string

size_typefind(string _Ch, size_type _Off = 0) const; // 从_Off开始查找_Ch,返回index。
size_typefind(const char * _Ptr,size_type _Off = 0) const; // 从_Off开始查找_Ptr
size_typefind(const char * _Ptr, size_type _Off,size_type _Count) const; // 从_Off开始查找_Ptr的前_Count个子串,有意义吗?
size_typefind(const basic_string<CharType, Traits, Allocator>& _Str,size_type _Off = 0) const; // 从_Off开始查找_Str

示例:


4)string 还提供了哪些功能

自动调整大小:string增加字符,是不是仅仅将已有字符加大,但相邻内存有可能被占用。从新分配一个新内存,将原来内容复制到新内存,但是频繁的这样操作效率会很低。C++如何做呢? 分配一个比实际字符串大的内存块,为字符串提供增大空间。如果字符串不断增大,超过内存块,程序分配一个为原来两倍的新内存。

示例:

使用C-Free实验结果

不知道为什么跟书上结果不一样???等待答案……


二,auto_ptr类

1)模板类,动态分配对象以及当对象不再需要时自动执行清理

2)void remodel(string &str)

{

string *ps=new string(str);

str = ps;

delete ps;

return;

}

三,STL Standard Template Library,标准模板库

1)简介:STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什么.

2)vector(矢量)之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据

示例:

3)迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上象迭代器的东西都可以叫做迭代器

迭代器提供一些基本操作符:*、++、==、!=、=。

四,通用编程技术

面向对象编程关注的是编程的数据方面,而通用编程技术关注的是算法。

通用程序工具:模板、迭代器

1)为何使用迭代器

模板使得算法独立于存储的数据类型,而迭代器使算法独立于使用的容器类型











分享到:
评论

相关推荐

    C++ Primer第四版【中文高清扫描版】.pdf

    第16章 模板与泛型编程 525 16.1 模板定义 526 16.1.1 定义函数模板 526 16.1.2 定义类模板 528 16.1.3 模板形参 529 16.1.4 模板类型形参 531 16.1.5 非类型模板形参 533 16.1.6 编写泛型程序 534 16.2 实例化 535...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     第16章 模板与泛型编程 577  16.1 定义模板 578  16.1.1 函数模板 578  16.1.2 类模板 583  16.1.3 模板参数 592  16.1.4 成员模板 595  16.1.5 控制实例化 597  16.1.6 效率与灵活性 599  16.2 模板实参...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     第16章 模板与泛型编程 577  16.1 定义模板 578  16.1.1 函数模板 578  16.1.2 类模板 583  16.1.3 模板参数 592  16.1.4 成员模板 595  16.1.5 控制实例化 597  16.1.6 效率与灵活性 599  16.2 模板实参...

    C++Primer第四版英文版

    分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、...

    C++ primer 第4版 原书+习题解答+源码 清晰pdf

    C++ primer 第4版 原书+习题解答+源码 清晰pdf,非影印。 本书是久负盛名的C++... 第16章 模板与泛型编程  第五部分 高级主题  第17章 用于大型程序的工具  第18章 特殊工具与技术  附录 标准库  索引

    C++ Primer 3rd Edition 中文完美版

    常广阔的库现在成了标准C++的一部分其中包括以前称为STL 标准模板库的内容新 的string 类型一组顺序和关联容器类型比如vector list map 和set 以及在这些类型 上进行操作的一组可扩展的泛型算法generic algorithm ...

    C++Primer中文版(第4版).part4

    作为目前业界广泛使用的编程语言,C++可谓包罗万象、博大精深。20年来,讲述C++的图书早已经... 第16章 模板与泛型编程  第五部分 高级主题  第17章 用于大型程序的工具  第18章 特殊工具与技术  附录 标准库

    C++ Primer第四版 中文版(第一卷)

    分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、...

    自学编程语言资料合集2

    分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑运算符、函数重载和函数模板、内存模型和名称空间...处理技术、string类和标准模板库、输入/输出、C++11新增功能等内容...

    cppPrimerPlus-six--master.zip

    分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间...重用、友元、异常处理技术、string类和标准模板库、输入/输出等内容...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

Global site tag (gtag.js) - Google Analytics