首页 > 编程语言 >C++封装数据结构

C++封装数据结构

时间:2023-10-25 14:55:33浏览次数:32  
标签:std 容器 封装 迭代 STL 封装数据 C++ 数据结构 结构

1.概论

C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。

2.常见封装

1.容器(Containers):

  • std::vector: 动态数组,支持随机访问,可以高效添加和删除元素。
  • std::list: 双向链表,支持快速插入和删除元素。
  • std::deque: 双端队列,支持快速随机访问和在两端添加/删除元素。
  • std::set 和 std::multiset: 有序集合,不允许重复元素。
  • std::map 和 std::multimap: 关联容器,以键值对形式存储数据。
  • std::unordered_set, std::unordered_multiset, std::unordered_map, 和 std::unordered_multimap: 无序关联容器,使用哈希表实现。
  • std::stack: 栈数据结构,后进先出(LIFO)。
  • std::queue: 队列数据结构,先进先出(FIFO)。
  • std::priority_queue: 优先级队列,可以按照优先级高低访问元素。

2.迭代器(Iterators):

STL容器通常提供迭代器,允许遍历容器中的元素。迭代器有不同的类型,如正向迭代器、反向迭代器、常量迭代器等。

3.算法

STL提供了大量算法,包括排序、搜索、转换、归约、拷贝、移动等。这些算法可以用于各种容器。
一些常见的算法包括 std::sort, std::find, std::binary_search, std::transform, std::accumulate 等。

4.函数对象(Function Objects):

STL允许你创建自定义的函数对象(通常称为谓词),以在算法中指定特定的行为。例如,你可以自定义排序规则来使用 std::sort。
迭代器适配器(Iterator Adapters):

5.迭代器适配器(Iterator Adapters):

STL提供了迭代器适配器,如 std::back_inserter, std::front_inserter 和 std::inserter,用于在容器中执行插入操作。

6.智能指针(Smart Pointers):

std::shared_ptr, std::unique_ptr, 和 std::weak_ptr 提供了内存管理的智能指针,有助于防止内存泄漏和管理资源。
字符串和字符处理:

7.字符串和字符处理:

std::string 提供了字符串操作的高级接口,包括字符串连接、查找、替换等。

8.输入/输出流:

std::cin, std::cout, std::ifstream, std::ofstream, std::stringstream 等用于输入和输出的流对象。

标签:std,容器,封装,迭代,STL,封装数据,C++,数据结构,结构
From: https://www.cnblogs.com/trmbh12/p/17787204.html

相关文章

  • bilibili B站:makefile 编译Linux C/C++项目快速入门
    视频摘自:https://www.bilibili.com/video/BV1vg41177zT    ......
  • bilibili B站:[C++基础补充] C++标准库速览
    视频摘自:https://www.bilibili.com/video/BV1ju411J7fC笔记摘自:https://gitee.com/yanmu_ym/cpp......
  • C++--变量作用域
    C++--变量作用域作用域是程序的一个区域,一般来说,有三个地方可以声明变量:在函数或一个代码块内部声明的变量,称为局部变量在函数参数的定义中声明的变量,称为形式参数在所有函数外部声明的变量,称为全局变量局部变量在函数或一个代码块{}内部声明的变量,称为局部变量。它们只能......
  • 数据结构之链表(Java)
    一:概述数组是严格的正规军,那么链表就是灵活多变的地下党链表是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成单向链表的每一个节点又包含两部分,一部分是存放数据变量的data,另一部分是指向下一节点的指针next.二:链表的具体说明<1>链表的基本操作总括*链表的基......
  • C++条件分支语句之if语句
    程序设计语句结构可以分为三大类:顺序结构、分支结构、循环结构。分支结构,就是程序运行到这里,会通过条件判断,满足某个条件就执行对应的分支。if条件分支结构分为:单分支、双分支、多分支单分支if(条件){ 满足条件执行的语句;}双分支if(条件){ 满足条件执行的语句;}else{ ......
  • C++ 数据类型
    C++数据类型目录C++数据类型基本的内置类型类型修饰符基本数据类型void类型和指针型(*)typedef声明定义常量#define预处理器typedef和#define区别null参考资料基本的内置类型C++为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的C++数......
  • vscode C++相关配置
    vscodeC++相关配置目录vscodeC++相关配置安装vscode下载C++编译环境安装编译器环境配置验证配置vscode配置文件launch.json配置tasks.json配置安装vscode官网地址:https://code.visualstudio.com/?wt.mc_id=DX_841432下载C++编译环境C/C++的编译器有很多种,大家可自行选择,这......
  • C++数组
    c++数组目录c++数组一维数组声明和初始化访问数组中元素修改数组数据遍历数组多维数组定义和初始化嵌套循环遍历指针数组动态数组参考资料数组是用来存储相同类型的变量的顺序集合。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。......
  • C++ char String
    C++charstring目录C++charstring字符char字符数组遍历基本函数字符比较char*、char[]转换为string字符串String类1.声明和初始化2.string的大小和容量3.拼接append()&+操作符4.插入push_back()&insert()5.string字符串遍历6.string删除erase()7.string查找与替换7.排序字......
  • C++指针基础
    指针基础目录指针基础引用定义和访问案例内存空间空指针和野指针const修饰指针指针之间的赋值通过指针改变原数据值指针和数组案例1案例2说明指针和函数动态内存指针潜在危险产生的原因:危害规避参考资料引用引用变量是对现有变量的引用,它是使用&运算符创建的:stringfood="......