目录
1.STL(Containers)简介
STL(Standard Template Library)是C++标准库中的一个重要组成部分,它提供了一系列的模板类和函数,用于实现常用的数据结构和算法。STL的设计目标是提供高效、可复用的数据结构和算法,以便开发人员能够更加方便地进行软件开发。
STL主要包含以下几个组件:
-
容器(Containers):STL提供了多种容器,如vector、list、deque、set、map等。这些容器提供了不同的数据结构,以满足不同的需求。例如,vector是一个动态数组,list是一个双向链表,set是一个集合,map是一个键值对的映射。
-
迭代器(Iterators):迭代器是STL中用于遍历容器元素的一种抽象概念。通过使用迭代器,我们可以方便地对容器中的元素进行访问和操作。STL提供了多种类型的迭代器,如输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器。
-
算法(Algorithms):STL提供了大量的算法,如排序、查找、复制、删除、替换等。这些算法可以直接应用于STL容器,也可以应用于普通的数组或其他容器。使用STL算法可以大大简化代码的编写,并提高代码的可读性和可维护性。
-
函数对象(Function Objects):函数对象是一种可调用的对象,它可以像函数一样被调用。STL中的很多算法都可以接受函数对象作为参数,以实现不同的操作。STL提供了一些内置的函数对象,如加法、减法、乘法、除法等,同时也支持用户自定义的函数对象。
-
适配器(Adapters):适配器是一种特殊的容器或迭代器,可以改变容器或迭代器的接口,以适应不同的需求。STL提供了多种适配器,如栈(stack)、队列(queue)、优先队列(priority_queue)等。
2.STL容器
1.vector
vector底层本质就是一个顺序表,它是一个可变长的数组,采用连续存储的空间来存储数据,它的元素类型也可以是任意的内置类型或者自定义类型。
1.1vector的定义方式
1.定义一个任意类型的空的vector
vector<int> abc;
用法:关键字vector+<定义类型>+空格+名称
2.定义一个任意类型的vector,并用n个val来初始化vector
vector<int> a1(10, 5);// 用10个5来初始化vector
用法:关键字vector+<定义类型>+空格+名称+定义
3.定义一个任意类型的vector,并用迭代器区间来初始化vector
vector<int> v5(v4.begin(), v4.end());// 用v4的迭代器区间来初始化v5
string s("hello world");
vector<char> v6(s.begin(), s.end());// 用s的迭代器区间来初始化v6
用法:关键字vector+<定义类型>+空格+名称+变量-区间
1.2vector的操作和遍历
v.capacity(); //容器容量
v.size(); //容器大小
v.at(int idx); //用法和[]运算符相同
v.push_back(); //尾部插入
v.pop_back(); //尾部删除
v.front(); //获取头部元素
v.back(); //获取尾部元素
v.begin(); //头元素的迭代器
v.end(); //尾部元素的迭代器
<

本文详细介绍了C++STL中的关键容器如vector、deque、map和栈,包括它们的定义、操作方法以及在编程中的应用,展示了STL如何提高开发效率和代码可维护性。

3578

被折叠的 条评论
为什么被折叠?



