一,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)为何使用迭代器
模板使得算法独立于存储的数据类型,而迭代器使算法独立于使用的容器类型
分享到:
相关推荐
第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...
第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 模板实参...
第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++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、...
C++ primer 第4版 原书+习题解答+源码 清晰pdf,非影印。 本书是久负盛名的C++... 第16章 模板与泛型编程 第五部分 高级主题 第17章 用于大型程序的工具 第18章 特殊工具与技术 附录 标准库 索引
常广阔的库现在成了标准C++的一部分其中包括以前称为STL 标准模板库的内容新 的string 类型一组顺序和关联容器类型比如vector list map 和set 以及在这些类型 上进行操作的一组可扩展的泛型算法generic algorithm ...
作为目前业界广泛使用的编程语言,C++可谓包罗万象、博大精深。20年来,讲述C++的图书早已经... 第16章 模板与泛型编程 第五部分 高级主题 第17章 用于大型程序的工具 第18章 特殊工具与技术 附录 标准库
分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、...
分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑运算符、函数重载和函数模板、内存模型和名称空间...处理技术、string类和标准模板库、输入/输出、C++11新增功能等内容...
分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间...重用、友元、异常处理技术、string类和标准模板库、输入/输出等内容...
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...