string类
STL
STL是Standard Template Library
的简称,中文名为是标准模板库,在Cpp中模板是构成泛型编程的基础,我们利用模板可以极大程度地提高我们的代码复用率,但是如果模板要我们现写也有点过于繁琐,不过好在Cpp中为我们写代码方便为我们制作了一套标准地模板库,供我们直接使用十分方便。
STL的版本
STL发展至今也不是一气呵成的,随着发展和进化,STL一共出现了四大版本。
HP版本
这个版本是STL的原始版本,由Alexander Stepanov、Meng Lee在惠普实验室完成,是所有STL版本的始祖。并且此版本秉承开源精神,允许任何人免费运用,拷贝,商用,传播,修改这些代码,唯一的条件也只是要求需要像原始版本一样开源使用。
P.J.版本
这个版本由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不可公开或修改,可读性较差。
RW版本
这个版本由Rouge Wage公司开发,继承自HP版本,被C++ Builder采用,不能公开或修改,可读性一般。
SGI版本
这个版本由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版本,被GCC采用,可移植性较好,可公开,修改,贩卖,可读性很高。也是我们学习主要参考的版本。
STL六大组件
STL中包含六大组件,他们共同组成STL互相协同工作。
容器
string, vector, list, deque, map, set, multimap, multiset
。
配接器
stack, queue, priority_queue
算法
find, swap, reverse, sort, merge...
空间适配器
allocator
迭代器
iterator, const_iterator, reverse_iterator, const_reverse_iterator
仿函数
greater, less...
STL在日常编程中无论是笔试还是项目都十分常用,必须多用多练,并且自己实现一遍才能熟练掌握。STL(包扩Cpp绝大部分库)学习可分为三个层次:
1、熟用STL
2、了解泛型技术d的内涵与STL的学理乃至实作
3、扩充STL
总结就是能用,明理,能扩展。
string类
string
类时STL中专门用于字符串处理的容器。在C语言中我们利用字符数组或字符指针来构成字符串,所有字符串使用十分不方便,库中为字符串提供的接口也并不便于使用,于是在Cpp中有了string
模板类,这个容器可以帮助我们更加方便的使用字符串,并且帮助我们封装了很多字符串相关的常用接口。
常用接口
构造函数
string
中提供了各种构造函数帮助我们构造字符串。
string(); //构造空的string类对象,即空字符串
string(const char *s);// 用C-string来构造string类对象
string(size_t n, char c);//string类对象中包含n个字符c
string(const string &s);//拷贝构造函数
string(const string &s, size_t n);//用s中的前n个字符构造新的string类对象 return 0;
容量相关接口
size_t size() const; // 返回字符串有效字符长度
size_t length() const; // 返回字符串有效字符长度
size_t capacity() const; // 返回空间总大小
bool empty() const; // 检测字符串释