STL 是指 C++ 标准模板库,是 C++ 语言标准中的重要组成部分,其以模板类和模版函数的形式提供了各种数据结构与算法的精巧实现,如果能充分使用 STL,可以在代码空间、执行时间、编码效率上得到极大的提高。 STL 大致可以分为三大类:容器(Container)、迭代器(iterator)、算法(algorithm)。 STL 容器是一些模板类,提供了...
#include"iostream"using namespace std;#include"vector"intmain(){// 创建空的 vector 容器std::vector<int>vec{1,2,3};// 获取末尾迭代器vector<int>::iterator it=vec.end();// 该迭代器指向 容器中 最后一个元素 之后一个位置// 下面的代码会造成异常 , 不能获取对应的元素值cout<<*it<<endl;...
一、迭代器(Iterator) 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历。 定义:迭代器是一种检查容器内元素并遍历元素的数据类型。 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。 迭代器(Iterator)是指...
输入迭代器 :又称为 " 只读迭代器 " , 只能读取 STL 容器中的元素 , 不能修改 容器中的 元素内容 ; 它们只能单向移动 , 即从前往后移动 ; 如 :std::istream_iterator就是一个 输入迭代器 , 它可以从输入流中读取元素 ; 输出迭代器 :又称为 " 只写迭代器 " , 该迭代器只能向容器中写入元素 , 单...
算法:用来操作容器中的元素的函数模板 一、容器 常见的容器有vector、deque、string、list、set、map、stack、queue、priority_queue 前三种支持随机访问迭代器,即支持随机存取,任何一个STL算法都可与其搭配使用,中间三种支持双向迭代器,而后三种则不支持任何迭代器。
迭代器是STL中非常重要的概念,用于遍历容器中的元素。对于序列容器(如vector、deque),使用erase后,后边的每个元素的迭代器都会失效。对于关联容器(如map、set),使用了erase后,当前元素的迭代器失效,但不会影响下一个元素的迭代器。对于list,使用erase后也会返回下一个有效的迭代器。
STL算法是一组函数模板,它们独立于容器,但操作容器中的元素。算法通过迭代器来访问容器中的元素,从而实现了与容器类型的无关性。STL算法非常灵活,可以对任意支持迭代器操作的容器进行操作。算法分类:STL算法大致可以分为非修改性算法(如find、count)、修改性算法(如copy、remove)、排序算法(如sort、stable_...
迭代器(iterator)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。 iterator模式定义如下:提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。(实际上是封装了指针的类中类) 迭代器的设计思维-STL的关键所在,STL的中心思想在于将容器(container)和算法(...
STL主要由以下几个部分组成: 容器(Containers):提供了多种数据结构,如vector、list、map等,用于存储和组织数据。 迭代器(Iterators):用于遍历容器中的元素,类似于其他语言中的指针或枚举器。 算法(Algorithms):提供了一系列通用算法,如查找、排序、转换等,这些算法可以直接应用于容器。
标准模板库(STL)是C++标准库的一部分,它提供了一组通用的数据结构和算法,以便在程序中使用。STL包括三个主要部分:容器、算法和迭代器。容器是STL的核心组成部分之一。它们是C++中用于存储和组织数据的类模板。STL提供了多种容器类型,包括序列容器(如vector、list和deque)和关联容器(如set和map)。容器提供了...