`

【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 第四版课后习题解答(第1~18章完整答案)完整版

    第三章“标准库类型”讲解了C++标准库中的基本类型,如iostream用于输入输出,string用于处理字符串,vector和array作为动态数组。习题解答会涉及这些类型的使用方法,例如流操作、字符串操作、容器的增删改查等。 ...

    C++Primer(第4版)-课后习题答案.pdf

    12. 第十二章类和数据抽象:讲解面向对象编程的核心概念,如类的定义、封装、构造函数、成员函数、友元等。 13. 第十三章复制控制:探讨对象的创建、复制和销毁,包括拷贝构造函数、赋值运算符重载以及浅拷贝和深...

    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第四版【中文高清扫描版】.pdf

    2. 标准库类型的使用,包括string、vector、bitset等容器的使用和操作。 3. C++的数组和指针操作,以及如何处理C风格字符串和多维数组。 4. 表达式中涉及到的算术、关系、逻辑、赋值、自增自减等操作符的使用,以及...

    c++ primer有目录pdf第五版本5th

    《C++ Primer》是有名的C++编程教材,其第五版(5th Edition)深入浅出地介绍了C++语言的基础知识以及C++11新标准的特性。这本书由Lippman、Lajoie和 Moo三位作者共同编写,是C++初学者和进阶者的重要参考书籍。 1....

    C++ Primer 第5版 课后标准答案

    6. **标准库**:讲解了C++标准库的重要组件,如`std::iostream`用于输入输出,`std::string`处理文本,`std::algorithm`提供的各种算法,以及`std::vector`和`std::map`等容器。 7. **模板**:C++的模板机制允许...

    c++primerplus最全课后习题答案

    ### 第16章:命名空间 #### PE16-1至PE16-8 这些习题涉及命名空间的使用,这是C++中避免名称冲突和组织代码的重要方式。读者可以学习到如何声明和使用命名空间,以及如何解决可能的命名冲突。 ### 第17章:C++和C...

    c++ primer 3rd textquery例子

    《C++ Primer 3rd TextQuery例子》是一个深入学习C++编程语言的实践案例,它主要涉及了标准模板库(STL)、输入/输出(I/O)流、对象和类、以及查询操作等核心概念。在这个例子中,我们将探讨如何利用C++设计一个文本...

    C++ PRIMER 部分头文件及资源

    2. **标准库头文件**:C++标准库提供了大量预先定义的函数和类,如`&lt;iostream&gt;`用于输入输出操作,`&lt;vector&gt;`和`&lt;list&gt;`用于容器操作,`&lt;algorithm&gt;`包含各种算法,`&lt;string&gt;`处理字符串等。这些头文件是C++编程的...

    C++ Primer 第四版课后习题答案

    第九章 顺序容器:讨论标准模板库(STL)中的顺序容器,如std::vector、std::deque和std::list,它们提供了高效的数据存储和操作。 第十章 关联容器:介绍std::set、std::map、std::unordered_set和std::unordered_...

    C++ primer自学资源共享

    C++标准头文件通常不包含.h后缀,比如`#include &lt;iostream&gt;`和`#include &lt;string&gt;`。而C标准库头文件在C++中会去尾加.h,如`#include &lt;stdio.h&gt;`。系统C头文件,如`#include &lt;sys/types.h&gt;`,也是C++程序中可能需要...

    C++primer 5.18习题

    在C++ Primer第五版第5章的习题5.18中,读者被要求编写一个程序,该程序定义了一个`vector`对象,其中每个元素都是指向`string`类型的指针。接着,程序需要读取这个`vector`对象,并输出每个`string`的内容及其相应...

    C++Primer中文版(第五版)习题答案

    "第十二章:命名空间和链接"会涉及代码组织和库的使用。最后,"附录"通常会提供额外的参考资料,如ASCII码表、运算符优先级等。 总的来说,《C++ Primer中文版(第五版)习题答案》是学习C++过程中的一位良师益友,...

    《C++Primer》(第四版)课后习题答案

    第十六章部分选做习题和第十七章用于大型程序的工具分别提供了部分额外的习题和介绍了一些高级编程技巧,包括如何管理和维护大型程序。 第十八章特殊工具与技术介绍了一些特殊的编程技术,包括模板和异常处理,这些...

    C++ Primer 知识点(1-7章)

    ### C++ Primer 知识点概述(1-7章) #### 流概念 - **`istream` 和 `ostream`**:这两个术语代表了输入和输出流。在C++编程环境中,“流”指的是从输入/输出设备(如键盘、显示器)读取或写入的一系列字符。这种...

    C++Primer习题答案

    第三章 标准库类型:介绍了一些常用的C++标准库,如iostream用于输入输出,vector和array用于动态数组操作,string处理字符串,以及算法库中的排序和查找函数。 第四章 数组和指针:详细阐述了数组的概念,包括一维...

    c++primer 学习笔记

    C++ Primer 是一本经典的C++学习书籍,涵盖了C++的基础知识和高级特性。这篇学习笔记主要涉及了C++编程的一些核心概念,包括程序结构、变量、基本类型、初始化与赋值、可读性、常量与引用、typedef、枚举以及标准库...

    C++Primer 读书笔记

    ### C++ Primer 读书笔记概览 #### 操作系统与主函数 - **主函数返回值的意义**:操作系统依据`main`函数返回的值来判定程序执行的状态,其中,0值意味着程序成功运行至结束。非零返回值,具体含义由操作系统定义...

    c++primer 第四版书本源代码

    《C++ Primer》是C++编程领域的一本经典教材,其第四版更是广受欢迎,深入浅出地介绍了C++语言的基础知识和高级特性。源代码是学习编程的重要辅助材料,它可以帮助读者更直观地理解书中的示例和概念。这份"**C++ ...

    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 模板实参...

Global site tag (gtag.js) - Google Analytics