会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
风陵南
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
7
8
9
···
18
下一页
2024年9月6日
C++ STL set/multiset容器
摘要: set/multiset容器 简介 Set的特性是,所有元素都会根据元素的值自动被排序。Set不允许两个元素有相同的值。 Set的迭代器iterator是一种const_iterator,不能通过迭代器改变任意set元素的值。 multiset的特性和用法和set相同,唯一的差别在于它允许值重复。
阅读全文
posted @ 2024-09-06 09:50 风陵南
阅读(73)
评论(0)
推荐(0)
2024年9月5日
C++ STL queue容器——队列
摘要: queue容器 基本概念 queue是一种**先进先出的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。 queue容器没有迭代器,所有元素进出都必须符合“先进先出”条件,只有顶端的元素才有机会被外界取用,所以也不提供遍历功能。 queue容器常用操作 构造函数 queu
阅读全文
posted @ 2024-09-05 17:12 风陵南
阅读(47)
评论(0)
推荐(0)
C++ STL stack容器——栈
摘要: stack容器 基本概念 stack是一种先进后出的数据结构,它只有一个出口,形式如下图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何地方可以存取stack的娶她元素。换句话说,stack不允许有遍历行为。 元素推入栈的操作称为push,将元素推出栈的操作称为p
阅读全文
posted @ 2024-09-05 16:56 风陵南
阅读(68)
评论(0)
推荐(0)
C++ 模板(函数模板与类模板)
摘要: 模板 模板介绍 C++提供了函数模板(function template)。所谓函数模板。实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡事函数体相同的函数都可以使用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时
阅读全文
posted @ 2024-09-05 14:01 风陵南
阅读(1044)
评论(0)
推荐(1)
2024年9月4日
算法与数据结构——AVL树(平衡二叉搜索树)
摘要: AVL树 在“二叉搜索树”章节提到,在多次插入和删除操作后,二叉搜索树可能退化为链表。在这种情况下,所有操作的时间复杂度将从O(logn)劣化为O(n)。 如下图,经过两次删除节点操作,这棵二叉搜索树便会退化为链表 再例如,下图所示的完美二叉树中插入两个节点后,树将严重向左倾斜,查找操作的时间复杂度
阅读全文
posted @ 2024-09-04 16:24 风陵南
阅读(771)
评论(0)
推荐(0)
C++ explicit关键字
摘要: explicit关键字 在C++中,explicit关键字用于控制某些类型转换的隐式性。它主要与构造函数和转换操作符相关联,下面详细介绍explicit关键字的使用和作用。 explicit构造函数 当构造函数被声明为explicit时,它指示的这个构造函数只能使用显式构造对象,不能用于隐式类型转换
阅读全文
posted @ 2024-09-04 09:58 风陵南
阅读(235)
评论(0)
推荐(0)
C++11新初始化方法 使用{}初始化变量
摘要: 列表初始化 在C++11及以后的版本中,使用{}来初始化变量是一种新的初始化方法,称为列表初始化(List Initialization)。这种初始化方法可以用来初始化内置类型、自定义类型以及聚合类型。 示例代码: /*AVL 树节点类*/ struct TreeNode{ int val{}; i
阅读全文
posted @ 2024-09-04 09:44 风陵南
阅读(155)
评论(0)
推荐(1)
2024年9月3日
算法与数据结构——二叉搜索树
摘要: 二叉搜索树 二叉搜索树(binary search tree)满足以下条件: 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。 对于任意节点的左、右子树也是二叉搜索树,同样满足上一条件。 二叉搜索树的操作 我们将二叉搜索树封装为一个类BinarySearchTree,并声
阅读全文
posted @ 2024-09-03 16:34 风陵南
阅读(288)
评论(0)
推荐(0)
算法与数据结构——二叉树数组表示
摘要: 二叉树数组表示 在链表表示下,二叉树的存储单元为节点TreeNode,节点之间通过指针相连接。同前面的队列或栈,二叉树同样可以使用数组来表示。 表示完美二叉树 给定一棵完美二叉树,我们将所有节点按照层序遍历的顺序存储在一个数组中,则每个节点都对应唯一的数组索引。 按照层序遍历的特性,我们可以推导处父
阅读全文
posted @ 2024-09-03 11:04 风陵南
阅读(646)
评论(0)
推荐(0)
2024年9月2日
算法与数据结构——二叉树种类介绍及其基本操作
摘要: 二叉树 二叉树(binary tree)是一种非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。 struct TreeNode{ int val; // 节点值 TreeNode *l
阅读全文
posted @ 2024-09-02 17:29 风陵南
阅读(1037)
评论(0)
推荐(0)
2024年8月28日
算法与数据结构——哈希算法
摘要: 哈希算法 前面介绍了哈希表的工作原理和哈希冲突的处理方法。然而无论是开放寻址还是链式地址,它们只能保证可以在发生冲突时正常工作,而无法减少哈希冲突的发生。 如果哈希冲突过于频繁,哈希表的性能则会急剧劣化。如下图所示,对于链式哈希表,理想情况下键值对均匀分布在各个桶中,达到最佳查询效率;最差情况所有键
阅读全文
posted @ 2024-08-28 17:29 风陵南
阅读(586)
评论(0)
推荐(0)
算法与数据结构——哈希冲突
摘要: 哈希冲突 通常情况下哈希函数那点输入空间远大于输出空间,因此理论上哈希冲突是不可避免的。比如输入空间为全体整数,输出空间为数组容量大小,则必然有多个整数映射至同一个桶索引。 哈希冲突会导致查询结果错误,严重影响哈希表的可用性。为了解决该问题,每当遇到哈希冲突时,我们就进行哈希表扩容,直至冲突消失。此
阅读全文
posted @ 2024-08-28 15:29 风陵南
阅读(242)
评论(0)
推荐(0)
2024年8月27日
算法与数据结构——哈希表
摘要: 哈希表 哈希表(hash table),又称散列表,它通过建立键key与值value之间的映射,实现高效的元素查询。具体而言,我们向哈希表中输入一个键key,则可以在O(1)时间内获取对应的值value。 除哈希表外,数组和链表也可以实现查询功能,他们的效率对比如下表: 添加元素:仅需将元素添加至数
阅读全文
posted @ 2024-08-27 15:21 风陵南
阅读(281)
评论(0)
推荐(0)
算法与数据结构——队列
摘要: 队列 队列(queue)是一种遵循先入先出规则的线性数据结构。队列模拟了排队现象,即新来的人不断加入队列尾部,而队列头部的人逐个离开。 如图所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队列尾部的操作称为“入队”,删除队首元素的操作称为“出队”。 队列常用操作 方法名 描述 时间复
阅读全文
posted @ 2024-08-27 10:16 风陵南
阅读(150)
评论(0)
推荐(0)
2024年8月26日
算法与数据结构——栈
摘要: 栈 栈(stack)是一种遵循先入后出逻辑的线性数据结构。 如图所示,我们将堆叠元素的顶部称为“栈顶”,底部称为“栈底”。将吧元素添加到栈顶的操作叫做“入栈”,删除栈顶的操作叫做“出栈”。 栈的常用操作 方法 描述 时间复杂度 push() 元素入栈(添加至栈顶) O(1) pop() 栈顶元素出栈
阅读全文
posted @ 2024-08-26 15:24 风陵南
阅读(181)
评论(0)
推荐(0)
上一页
1
2
3
4
5
6
7
8
9
···
18
下一页
公告