C++封装数据结构
1.概论
C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。
2.常见封装
1.容器(Containers):
- std::vector: 动态数组,支持随机访问,可以高效添加和删除元素。
链接:https://www.cnblogs.com/trmbh12/p/17787279.html - std::list: 双向链表,支持快速插入和删除元素。
链接:https://www.cnblogs.com/trmbh12/p/17787408.html - 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 等用于输入和输出的流对象。
C++封装数据结构的更多相关文章
- Redis基本数据类型底层数据结构
Redis数据类型底层数据结构 Redis目前基本的数据类型有String.List.Set.ZSet.Hash五种,首先Redis是C语言开发的,所以底层就是用C语言封装数据结构或者C语言本身提供的 ...
- Java如何解决脆弱基类(基类被冻结)问题
概述 大多数好的设计者象躲避瘟疫一样来避免使用实现继承(extends 关系).实际上80%的代码应该完全用interfaces写,而不是通过extends.“JAVA设计模式”一书详细阐述了怎样用 ...
- [WPF]GridView或DataGrid中自定义样式:依据某一列设定其对应行的样式(背景色,字体等)
附效果照一张: 本方法使用StyleSelector来 获得依据自定义逻辑的style. ① class ConditionalStyleSelector : StyleSelector { publ ...
- Guava学习笔记:Immutable(不可变)集合
不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客 ...
- guava学习--集合2&Range
转载:http://www.cnblogs.com/peida/p/Guava_ImmutableCollections.html Table: 当我们需要多个索引的数据结构的时候,通常情况下,我们只 ...
- PDF数据提取------3.解析Demo
1.PDF中文本字符串格式中关键值信息抓取(已完成) 简介:这种解析比较传统最简单主要熟练使用Regular Expression做语义识别和验证.例如抓取下面红色圈内关键信息 string mett ...
- OC1_类与对象
// // main.m // OC1_类与对象 // // Created by zhangxueming on 15/6/9. // Copyright (c) 2015年 zhangxuemin ...
- c语言技巧--长期更新
1. #define LOWER(c) (unsigned char)(c | 0x20) 换成小写 2. gcc -Wall -Werror //告警当成 错误来处理 ...
- .NETFramework类库
.NET Framework 包括可加快和优化开发过程并提供对系统功能的访问的类.接口和值类型. 为了便于语言之间进行交互操作,大多数 .NET Framework 类型都符合 CLS,因而可在编译器 ...
- Immutable(不可变)集合
Immutable(不可变)集合 不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对 ...
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (162)-- 算法导论13.1 2题
二.用go语言,对图13-1中的红黑树,画出对其调用TREE-INSERT 操作插人关键字 36 后的结果.如果插人的结点被标为红色,所得的树是否还是一棵红黑树?如果该结点被标为黑色呢? 文心一言,代 ...
- springboot--ActiveMQ--消息队列
ActiveMQ远程消息队列 一.我们创建springboot项目工程 二.创建完毕我们简单介绍 activeMQ 1.概述 消息中间件可以理解成就是一个服务软件,保存信息的容器,比如生活中的快递云柜 ...
- Spring 七种事务传播性介绍
作者:vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识. Spring中定义了7种事务传播性: PROPAGATION_REQUIRED PRO ...
- Python——第二章:字符串操作——格式化
1. 字符串的格式化问题 举例:要按照如下格式输出一句话 我叫xxx, 我住在xxxx, 我今年xx岁, 我喜欢做xxxxx 这里首先引入占位符概念: %s 占位字符串%d 占位整数%f 占位小数 因 ...
- Pikachu漏洞靶场 Over Permission(越权)
Over Permission(越权) 文章目录 Over Permission(越权) 水平越权 垂直越权 水平越权 首先根据提示信息的账号密码登录: 点击查看个人信息: 抓包之后发现查的人是在UR ...
- Asp .Net Core系列:Exceptionless简介和部署(Windows、Linux、Docker)
目录 一.简介 二.版本 三.运行说明 1.Exceptionless 2.Elasticsearch 3.Exceptionless.UI 四.打包Exceptionless.UI 五.window ...
- MySQL基础篇:第七章_详解mysql存储过程&函数
存储过程 含义:一组经过预先编译的sql语句的集合 好处: 1.提高了sql语句的重用性,减少了开发程序员的压力 2.提高了效率 3.减少了传输次数 分类: 1.无返回无参 2.仅仅带in类型,无返回 ...
- AI开发实践丨客流分析之未佩戴口罩识别
摘要:通过本教程,我们可以学习客流统计应用的扩展--过线客流统计+口罩佩戴识别,可用于商超.写字楼入口安检. 本文分享自华为云社区<客流分析之未佩戴口罩识别>,作者: HiLens_fei ...
- 解读 SSDB、LevelDB 和 RocksDB 到 GaussDB(for Redis) 的迁移
摘要:本期将详细介绍 SSDB.LevelDB 和 RocksDB 到 GaussDB(for Redis)的迁移. 本文分享自华为云社区<华为云PB级数据库GaussDB(for Redis) ...
- 想做DBA,多租户管理你一定要知道这些
摘要:多租户为满足客户混合负载处理需求而生,通过提供两层用户机制,分层资源隔离,满足客户对计算和存储资源的自主控制需求. 本文分享自华为云社区<关于GaussDB(DWS)多租户管理,这些你一定 ...