- 博客(19)
- 收藏
- 关注
原创 动态库加载失败的原因及解决办法
小结:gcc进行链接时,动态库的代码不会被打包到可执行程序中,程序运行需要加载的时候,需要动态载入器来获取绝对路径。配置方式一:终端直接配置:(暂时的 关了之后就没有了)shift+g 跳转到最后一行。方式一:用户级别的长久配置。第一个.相当于source。方式一:系统级别的永久配置。
2023-06-16 17:40:27
2806
原创 gcc学习
在上面代码的基础上把注释去掉了,而且宏定义的PI替换成了3.14。在VScode上面生成test.o文件 是二进制文件 不可读。如果直接写gcc test.c则会生成a.out文件。Linux中可执行软件默认是绿色的后缀是.out文件。汇编在vscode生成如下的test.s文件。目标代码相当于可执行文件。生成一个可执行的.out 文件。在VScode上面呈现的事情是。生成 test.i进行预处理。在vscode写如上的代码。链接 .test.o。预处理完成之后就需要。
2023-06-15 20:48:59
393
原创 万用的hash Function:排出乱七八糟的hash code
使用hash table为了防止其中一个链表过长,需要在合适时间打散所有元素重新排列;把初始的hashtable空间叫做篮子(bucket),当我们放入的元素个数大于篮子个数时扩充篮子个数,扩充数量为当前篮子个数2倍附近的一个质数,然后将所有元素重新从头开始放入新篮子。
2023-06-14 10:07:10
88
原创 Adapter(适配器)
通过bind,我们将仿函数与参数进行绑定,可实现算法所需的条件判断功能,例如判断小于12的元素时,可使用bind2nd(less(),12),就可以达到目的。否定(negate)这里就是取反的操作,例如not1(bind2nd(less(),12)),就可判断不小于12的元素。stack、queue-----内含底层容器Sequence,需要把Sequence利用Adapter适配一下。仿函数适配器,相比于其他适配器更加地灵活,可以自由地组合适配。函数适配器分为两类:绑定器 与 求反器。
2023-06-13 16:18:29
397
原创 仿函数functors
binary_function里面由两个操作符---------unary_function里面由一个操作符。相对关系类:equal_to(==)、less();select1st----输入东西输出pair的的第一个元素。select2nd----输入东西输出pair的的第二个元素。逻辑运算类:logiclal_and(&&);identity----输入什么输出就是什么。算术类:plus(+)、minus(-);
2023-06-13 11:25:29
80
原创 count、count if等算法
lower_bound、upper_bound返回的是元素的位置,lower_bound是在不破坏排序的情况下找到的最低位置、upper_bound是在不破坏排序的情况下找到的最高位置。binary_search:二分查找算法(前提是已经排好序的)---lower_bound、upper_bound。
2023-06-13 11:07:56
114
原创 迭代器以及迭代器分类
intput_iterator_tag包含farward_iterator_tag包含bidirectional_iterator_tag包含random_access_iterator_tag。set/multiset---bidirectional(双向)forward-list---farward(单向)list---bidirectional(双向)vector---random(可以跳的)deque---random(可以跳的)arr---random(可以跳的)
2023-06-13 09:55:38
76
原创 rb_tree/hashtable下的容器对比
hash_function是使映射出来的值足够乱,传出来的东西是hash_code,越乱越不容易发生哈希碰撞;set的key必须是独一无二的,不可以重insert使用底层insert_unique();map的key必须是独一无二的,不可以重insert使用底层insert_unique();multiset的key可以重复,其insert使用底层insert_equal();multimap的key可以重复,其insert使用底层insert_equal();),因为key和value是二合一的;
2023-06-12 17:23:25
157
1
原创 容器、红黑树
红黑树:红黑树是一种自平衡的二叉查找树,是一种高效的查找树。---所以基于这个set和multiset可以按照key排序。每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点(简称黑高)。所有叶子都是黑色(叶子是NIL节点)。
2023-06-12 11:43:58
123
1
原创 二叉树总结:
{中序左中右放的时候:左中右}----写法不同(?搜索二叉树用的是这种吗?{后左右中放的时候:中右左}////{前序中左右放的时候:中右左}{前序中左右放的时候:右左中}{中序左中右放的时候:右中左}{后左右中放的时候:中左右}一层一层从上到下从左到右遍历。统一迭代法里面会放空指针控制。
2023-06-09 11:50:48
72
原创 Day6代码随想录刷题|242.有效的字母异位词、349. 两个数组的交集 、第202题. 快乐数、1.两数之和
思路:确认两个字符串中的元素是否一致,首先建立一个数组存放所有的元素,然后把第一个字符串中的元素全部放在新建的字符串里面,然后用新建的字符串减去第二个字符串,如果两个字符串相等,那么最后新建的数组中应该没有元素,反之则有元素。349. 两个数组的交集。242.有效的字母异位词。第202题. 快乐数。
2023-02-21 16:09:21
183
原创 Day4力扣刷题---24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
同理,再这道题目中要删除倒数第n个节点,也需要知道倒数第n个节点的前一个和后一个节点,所以利用双指针的方法,先让fast指针走n+1步,然后slow和fast同时运动,当fast指向null时,遍历结束,次数slow的位置就是需要删除的第n个节点的前一个位置,此时,只需要slow->next=slow->next->next即可。思路:要删除列表中的第n个节点,那么就需要知道第n-1个节点和第n+1个节点的位置,然后直接将第n-1个节点的下一个指针指向第n+1个指针,那么第n个节点将会被删除。
2023-02-18 17:58:07
120
原创 Day3--力扣刷题203.移除链表元素、206.反转链表、707.设计链表
思路:在节约内存的前提下可以将指针链表直接反转,那就需要创建一个新的指针来临时保存下一个元素,然后改变next的方向。203.移除链表元素。方法二:虚拟头结点法。
2023-02-17 16:12:54
257
原创 Day2.力扣刷题---977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵 II
用左右指针的方法,创建一个新的数组,从右边开始由大到小存放平方后的整数。比较最左端平方和最右端平方的大小,取到最大值之后放在新数组的最右端,然后新数组指针左移。同样需要两个指针,一个指针指向滑动窗口的起始位置,另一个指针指向滑动窗口的终止位置,随着sum和target之间关系的变化,滑动窗口的起始位置相应变化。(力扣题目:给一个按非递减顺序 排序的整数数组 nums,返回 每个数字的平方组成的新数组,要求也按 非递减顺序排序。首先需要创建一个矩阵来存放数组,从(0,0)位置开始按照顺时针的顺序转着写代码。
2023-02-16 11:26:07
582
1
原创 代码随想录Day1--704二分查找,27移除元素
二分查找首先要搞清楚用的是左闭右闭还是左闭右开的方法,左闭右闭的方法在while循环中left和right是可以相等的,但是左闭右开的方法在while循环中left和right不可以相等。值得注意的是左闭右闭和左闭右开在收缩右端点的时候是不同的,因为左闭右闭是可以取到最右侧端点的,而当target < nums[middle]时,是不可以取到右端点的,所以middle需要减1。首先是双指针法:思路大概是快慢两个指针同时进行,快指针目的是找目标元素,慢指针是为了保存移除之后的数组,直到遍历结束为止。
2023-02-15 11:54:09
448
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅