ToB企服应用市场:ToB评测及商务社交产业平台

标题: C++STL学习第一篇(什么是STL以及string的各种功能用法) [打印本页]

作者: 知者何南    时间: 2024-5-13 05:33
标题: C++STL学习第一篇(什么是STL以及string的各种功能用法)
STL

STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器、空间设置器。
总的来说,STL 适用于必要数据结构、算法和迭代器等功能的各种场景。它为 C++ 程序员提供了丰富的工具和功能,帮助他们更加高效地处理和操纵数据,提高代码的可读性、重用性和性能。无论是简朴的数据存储管理还是复杂的数据处理和算法实现,STL 都是一个强大而实用的工具库。
容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class template。
算法:各种常用的算法,如sort、find、copy、for_each。从实现的角度来看,STL算法是一种function tempalte.
迭代器:扮演了容器与算法之间的胶合剂,共有五种范例,从实现角度来看,迭代器是一种将operator* , operator-> , operator++,operator--等指针相关操纵予以重载的class template. 所有STL容器都附带有本身专属的迭代器,只有容器的设计者才知道如何遍历本身的元素。原生指针(native pointer)也是一种迭代器。
仿函数:行为类似函数,可作为算法的某种策略。从实现角度来看,仿函数是一种重载了operator()的class 或者class template
适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。
空间设置器:负责空间的设置与管理。从实现角度看,设置器是一个实现了动态空间设置、空间管理、空间释放的class tempalte.
STL优点

STL三大组件

容器

常用的数据结构无外乎数组(array),链表(list),tree(树),栈(stack),队列(queue),聚集(set),映射表(map),根据数据在容器中的分列特性,这些数据分为序列式容器关联式容器两种。
Ø 序列式容器就是容器元素在容器中的位置是由元素进入容器的时间和地点来决定。Vector容器、Deque容器、List容器、Stack容器、Queue容器。
Ø 关联式容器是指容器已经有了一定的规则,容器元素在容器中的位置由我的规则来决定。Set/multiset容器 Map/multimap容器
算法

算法分为:质变算法非质变算法
质变算法:是指运算过程中会更改区间内的元素的内容。例如拷贝,替换,删除等等
非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等等
迭代器

迭代器(iterator)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。在一书中提供了23中设计模式的完备描述,其中iterator模式界说如下:提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。
迭代器的设计思维-STL的关键地点,STL的中心思想在于将数据容器(container)和算法(algorithms)分开,彼此独立设计,最后再一贴胶着剂将他们拉拢在一起。从技能角度来看,容器和算法的泛型化并不困难,c++的class template和function template可分别到达目标,如果设计出两这个之间的良好的胶着剂,才是浩劫题。
迭代器的种类:
输入迭代器提供对数据的只读访问只读,支持++、==、!=输出迭代器提供对数据的只写访问只写,支持++前向迭代器提供读写操纵,并能向前推进迭代器读写,支持++、==、!=双向迭代器提供读写操纵,并能向前和向后操纵读写,支持++、--,随机访问迭代器提供读写操纵,并能在数据中随机移动读写,支持++、--、[n]、-n、=[code]void test2() {        vectorr;//STL 中的标准容器之一 :动态数组        r.push_back(1);//vector 容器提供的插入数据的方法        r.push_back(2);        r.push_back(7);        //vector 容器提供了 begin()方法 返回指向第一个元素的迭代器        //vector 容器提供了 end()方法 返回指向最后一个元素下一个位置的迭代器        vector::iterator reg = r.begin();        vector::iterator ina = r.end();//这是一种随机访问范例的迭代器        while (reg != ina) {                cout




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4