33/2023-01-09

# 2023-01-09

前言

最近在学习C++的STL,感觉学习的非常快,但是也有点迷茫。想利用自己的空闲时间去整理一下自己所学,同时也可以通过整理加深自己对知识的理解。于是就有了这篇文章,用来记录自己在C++ STL的学习情况。

C++11

C++11标准定义了C++的STL,其中的容器包括数组、向量、列表、栈、队列等,这些容器在C++11中都使用模板实现。其中向量、列表和栈等容器都定义了迭代器的概念,因此迭代器的使用是本章的重要内容。

迭代器

迭代器是用于遍历容器对象中的元素的指针。在C++11中,迭代器是一种抽象的、不具体的指针。迭代器可以用来遍历容器对象中的元素,但是迭代器本身并不具体指向容器中的某个元素,因此迭代器可以遍历任意容器对象中的元素。迭代器通过容器对象的成员函数进行初始化,容器对象通过迭代器访问容器中的元素。迭代器的类型有三种:左值迭代器、右值迭代器和随机访问迭代器。

左值迭代器

左值迭代器是用于访问容器对象中的元素的迭代器。左值迭代器可以修改容器中的元素,因此左值迭代器可以被赋值。左值迭代器是左值类型。左值迭代器可以使用*运算符和->运算符访问容器中的元素。左值迭代器通过容器对象的成员函数进行初始化,容器对象通过迭代器访问容器中的元素。左值迭代器有三种:向量迭代器、列表迭代器和栈迭代器。向量迭代器是向量对象的成员,列表迭代器是列表对象的成员,栈迭代器是栈对象的成员。

右值迭代器

右值迭代器是用于访问容器对象中的元素的迭代器。右值迭代器不可以修改容器中的元素,因此右值迭代器不可以被赋值。右值迭代器是右值类型。右值迭代器可以使用*运算符和->运算符访问容器中的元素。右值迭代器通过容器对象的成员函数进行初始化,容器对象通过迭代器访问容器中的元素。右值迭代器有三种:向量右值迭代器、列表右值迭代器和栈右值迭代器。向量右值迭代器是向量对象的成员,列表右值迭代器是列表对象的成员,栈右值迭代器是栈对象的成员。

随机访问迭代器

随机访问迭代器是一种可以进行随机访问的迭代器,可以用来对容器对象中的元素进行随机访问。随机访问迭代器是一种特殊的迭代器,它可以用来进行随机访问,因此随机访问迭代器可以通过容器对象的成员函数进行初始化,容器对象通过迭代器访问容器中的元素。随机访问迭代器有三种:向量迭代器、向量右值迭代器和向量左值迭代器。向量迭代器是向量对象的成员,向量右值迭代器是向量对象的成员,向量左值迭代器是向量对象的成员。

迭代器与迭代器之间的转换

迭代器之间可以相互转换。左值迭代器可以转换为向量左值迭代器和列表左值迭代器,右值迭代器可以转换为向量右值迭代器和列表右值迭代器。左值迭代器可以转换为随机访问迭代器,右值迭代器不可以转换为随机访问迭代器。

迭代器与指针之间的转换

迭代器可以转换为指针,指针也可以转换为迭代器。

迭代器的成员函数

迭代器对象中的成员函数可以获取迭代器的状态。迭代器对象中的成员函数有:`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、`bool operator!=(const iterator &iter) const;`、`bool operator==(const iterator &iter) const;`、