C++|STL简介-string-vector基础运用

简介: C++|STL简介-string-vector基础运用

什么是STL

STL(标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且

是一个包罗数据结构与算法的软件框架。

里面的算法和容器可以直接使用,比如直接调用一个sort函数就可以对一组数据排序。不用再让我们写一个排序功能的函数。

STL里面有什么

STL六大组件

这里重点介绍容器和算法两大组件。

容器

容器提供了各种数据结构,使得数据的存储、访问和管理变得更加方便和高效。STL中的容器主要包括以下几类:

string

string类并不直接归类为序列容器或关联容器。它是一种特殊的类,专门用于处理字符串数据。

序列式容器

这些容器存储的元素具有线性关系,可以通过下标访问。

vector

一个动态数组,可以灵活地改变大小。

deque

双端队列,支持在序列的两端进行元素的插入和删除操作。

list

双向链表,对元素的插入和删除操作效率较高。

关联式容器

这些容器存储的元素具有键值对关系,通过键来访问元素。

set

集合,存储的元素是唯一的,且自动排序。

multiset

多重集合,允许存储重复的元素,且自动排序。

map

映射,存储的元素是键值对,键是唯一的,且自动排序。

multimap

多重映射,允许存储具有相同键的多个元素。

算法

算法模块提供了大量的算法函数来操作容器中的数据对象。要使用STL中的算法函数,必须包含头文件<algorithm>。

STL中的算法大致可以分为以下几类:

非可变序列算法

这些算法不直接修改它们所操作的容器的内容。例如,find函数用于在容器中查找某个元素,但不修改容器本身。

可变序列算法

这些算法可以修改它们所操作的容器的内容。例如,replace函数用于将容器中的某个元素替换为另一个元素。

排序算法

包括对序列进行排序和合并的算法,以及搜索算法和有序序列上的集合操作。例如,sort函数用于对容器中的元素进行排序。

数值算法

对容器内容进行数值计算。这些算法主要包含在<numeric>头文件中,包括一些在序列上进行简单数学运算的模板函数,如accumulate(累加)和inner_product(内积)。

网站推荐

cplusplus.com - The C++ Resources Network

string基础运用

vector与迭代器基础运用


相关文章
|
3天前
|
编译器 C++ 容器
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
24 2
|
1月前
|
存储 安全 C语言
C++ String揭秘:写高效代码的关键
在C++编程中,字符串操作是不可避免的一部分。从简单的字符串拼接到复杂的文本处理,C++的string类为开发者提供了一种更高效、灵活且安全的方式来管理和操作字符串。本文将从基础操作入手,逐步揭开C++ string类的奥秘,帮助你深入理解其内部机制,并学会如何在实际开发中充分发挥其性能和优势。
|
5天前
|
存储 算法 C++
【c++丨STL】map/multimap的使用
本文详细介绍了STL关联式容器中的`map`和`multimap`的使用方法。`map`基于红黑树实现,内部元素按键自动升序排列,存储键值对,支持通过键访问或修改值;而`multimap`允许存在重复键。文章从构造函数、迭代器、容量接口、元素访问接口、增删操作到其他操作接口全面解析了`map`的功能,并通过实例演示了如何用`map`统计字符串数组中各元素的出现次数。最后对比了`map`与`set`的区别,强调了`map`在处理键值关系时的优势。
104 73
|
7天前
|
存储 算法 C++
【c++丨STL】set/multiset的使用
本文深入解析了STL中的`set`和`multiset`容器,二者均为关联式容器,底层基于红黑树实现。`set`支持唯一性元素存储并自动排序,适用于高效查找场景;`multiset`允许重复元素。两者均具备O(logN)的插入、删除与查找复杂度。文章详细介绍了构造函数、迭代器、容量接口、增删操作(如`insert`、`erase`)、查找统计(如`find`、`count`)及`multiset`特有的区间操作(如`lower_bound`、`upper_bound`、`equal_range`)。最后预告了`map`容器的学习,其作为键值对存储的关联式容器,同样基于红黑树,具有高效操作特性。
26 3
|
1月前
|
存储 缓存 C++
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
1月前
|
C++
模拟实现c++中的string
模拟实现c++中的string
|
23天前
|
存储 算法 C++
【c++丨STL】priority_queue(优先级队列)的使用与模拟实现
本文介绍了STL中的容器适配器`priority_queue`(优先级队列)。`priority_queue`根据严格的弱排序标准设计,确保其第一个元素始终是最大元素。它底层使用堆结构实现,支持大堆和小堆,默认为大堆。常用操作包括构造函数、`empty`、`size`、`top`、`push`、`pop`和`swap`等。我们还模拟实现了`priority_queue`,通过仿函数控制堆的类型,并调用封装容器的接口实现功能。最后,感谢大家的支持与关注。
64 1
|
1月前
|
存储 算法 C++
深入浅出 C++ STL:解锁高效编程的秘密武器
C++ 标准模板库(STL)是现代 C++ 的核心部分之一,为开发者提供了丰富的预定义数据结构和算法,极大地提升了编程效率和代码的可读性。理解和掌握 STL 对于 C++ 开发者来说至关重要。以下是对 STL 的详细介绍,涵盖其基础知识、发展历史、核心组件、重要性和学习方法。
|
10天前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
39 11
|
16天前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。

热门文章

最新文章