C++高级,关于STL标准模板库

1.关于什么事STL就不在这里累述了,不了解的可以去百度一下

整个软件领域里,数十年来确实都在为了一个目标而奋斗—可复用性

从最早的面向过程的函数库,到面向对象的程序设计思想,到各种组件 技术(如:COM、EJB),到设计模式(design  pattern)等等。而STL也在 做着类似的事情,同时在它背后蕴涵着一种新的程序设计思想–泛型化设计 (generic  programming)。

STL的基本概念

STL的代码可以在广义上分为三类:

container(容器)

iterator(迭代器)

algorithm(算法)

容器即是数据结构中的结构,如队列,栈等;   容器和算法通过迭代器可以进行无缝地连接。

注意:string也是STL的一部分。

使用STL的好处  :

1)STL是C++的一部分,因此不用额外安装什么,它被内建在你的编译器之内。

2)STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但 是这种分离确实使得STL变得非常通用。

3)   程序员可以不用思考STL具体的实现过程,只要能够熟练使用STL就OK 了。这样他们就可以把精力放在程序开发的别的方面。

4)   STL具有高可重用性,高性能,高移植性,跨平台的优点。

5)   程序员可以不用思考STL具体的实现过程,只要能够熟练使用STL就OK 了。这样他们就可以把精力放在程序开发的别的方面。
6)   了解到STL的这些好处,我们知道STL无疑是最值得C++程序员骄傲的一部 分。每一个C++程序员都应该好好学习STL。只有能够熟练使用STL的程序员, 才是好的C++程序员。

总之:招聘工作中,经常遇到C++程序员对STL不是非常了解。大多是有 一个大致的映像,而对于在什么情况下应该使用哪个容器和算法都感到比较茫 然。STL是C++程序员的一项不可或缺的基本技能,掌握它对提升C++编程大有 裨益。
光说不练假把式,下面就来写写代码:

咱们就来详细说说容器,那么容器都分为哪几类了?

容器分为:序列式容器和关联式容器。

序列式容器(Sequence  containers)

每个元素都有固定位置,取决于插入时机和地点,和元素值无关。   vector、deque、list

 

关联式容器(Associated  containers)  

元素位置取决于特定的排序准则,和插入顺序无关     set、multiset、map、multimap

string容器

string是STL的字符串类型,通常用来表示字符串。而在使用string之前字符串通常使用 chai* 表示的。 那么二者有什么区别呢

  • 1.string是一个类,char*是一个指向字符的指针(string其实就是一个char*型的容器,他封装饿char*,来管理字符)
  • 2.使用string不用考虑内存的释放和越界(string管理char*所分配的内存。每一次string的复制,取值都由 string类负责维护,不用担心复制越界和取值越界等
  • 3.string提供了一系列的字符串操作函数(例如:查找find(),拷贝copy(),删除erase(),替换replace(),插入 insert()

值得注意string类的字符操作时 operator[]  和  at()的区别:

主要区别:at()在越界时会抛出异常,operator[]在刚好越界时会返回 (char)0,再继续越界时,编译器直接出错。如果你的程序希望可以通过try,catch 捕获异常,建议采用at()

string的比较

string的查找和替换

string的区间删除和插入

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注