C++
一些有质量的C++博文
我有明珠一颗
一条通往业界大神的成功之路
展开
-
C++ 纠错题总结2
1、for循环中的判断语句: 要注意初始赋值、< 还是 <=for(int i = 0; i < n; i++)2、cin.getline(char[], int, char)注意:第二个参数为不是char[]的有效元素个数,因为最后一个元素位置要用来存储 '\0'3、函数形参有默认值的,有默认值的形参靠后放,而不能放在无默认的形参之前4、权限问题,类中不标...原创 2023-10-23 15:01:20 · 275 阅读 · 1 评论 -
分享一下我的2020计算机考研王道xmind学习笔记(心血之作)
去年开始准备考研的时候,经朋友推荐,第一次用xmind来做学习笔记,相比纸质的笔记本而言,xmind确实要方便多了,你看很多视频讲师也都是用类似xmind那样的结构图来介绍自己的章节内容的,我把我去年的学习笔记上传到csdn资源,喜欢的人可以去下载(毕竟是心血,不收点积分对不起自己,介意的就不要去下了哈)当然啦,大家也可以自己写,自己总结的更容易印象深刻。数据结构.xmind计算机...原创 2020-03-13 11:33:25 · 5425 阅读 · 6 评论 -
早起做LeetCode——剑指 Offer 11. 旋转数组的最小数字
做题链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/二分法 + 反向去重法提交结果:耗时4ms,内存11.8M由于在去重的地方优化了下,耗时是官方解答的一半当遇到相同元素时,由于不确定遍历左边还是右边,这里采用的方法是,先从mid开始往前遍历到low,找到第一个不等于mid处值的元素a,如果a<mid处值,则最小值肯定在[low,a]之间;如果a>mid处值,则说明原创 2021-05-12 10:48:31 · 115 阅读 · 0 评论 -
早起做LeetCode——剑指 Offer 09. 用两个栈实现队列
做题链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/用双栈代替队列,一个栈用于push,一个栈用于popclass CQueue { stack<int> stack1, stack2;public: CQueue() { while(!stack1.empty()) stack1.pop(); while(!stack2.em原创 2021-05-11 14:59:00 · 107 阅读 · 0 评论 -
早起做LeetCode——剑指 Offer 10- I. 斐波那契数列
做题链接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/该题为简单题,且好测试,多测试几下再提交,定能通过class Solution {public: int fib(int n) { static vector<int> fibs(101); static int max_val = 1000000007; if(n == 0) return 0;原创 2021-05-10 11:43:34 · 82 阅读 · 0 评论 -
早起做LeetCode——剑指 Offer 07. 重建二叉树
做题链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/这道题较为简单,采用递归方式就可以轻松解决,但是由于对C++编程不太熟悉,也费了点功夫。此处采用了首尾序号标记法,没有重复构建数组,以免占用过多内存。元素查找处的代码可做进一步优化,以降低时间复杂度。/** * Definition for a binary tree node. * struct TreeNode { * int val;原创 2021-05-10 11:20:52 · 83 阅读 · 0 评论 -
早起做LeetCode——替换空格&从头到尾打印链表
这两道属于简单题,一提交就能成的那种,提交结果也不错,在此做个记录//时间:0,空间:创建一个新数组的空间 class Solution {public: string replaceSpace(string s) { char a[30000]; int len = s.length(); for(int i=0,j=0; i <=len; i++){ if(s[i] != ' '){原创 2021-05-08 08:27:34 · 82 阅读 · 0 评论 -
program received signal sigsegv报错
为了图省事,用一行代码声明并初始化了一个二位数组,然后报错了vector<vector<int>> son(m, vector<int>(n, 0));改成以下代码就正常运行了,具体不知道是什么原因,可能是resize比较重要吧vector<vector<int>> son(n);for(int i=0; i<n; i++){ son[i].resize(m);} ...原创 2021-04-29 10:06:33 · 345 阅读 · 0 评论 -
c++语言程序设计(郑莉)学习笔记(详细中的详细)
前一阵子上传了一个C++学习笔记资料,反响平平,无人下载,所以今天写一篇博客来推荐一波我的笔记。该xmind笔记是我在2020年准备东南大学复试期间写下的,内容是我在反复学习《C++语言程序设计(郑莉)》书籍,以及哔哩哔哩上的197集清华大学公开课的基础上,总结而成的,内容可说是非常详细了,最后一遍的时候,我把编程时的一些要注意的细节也添上去了,无论是正在学习C++的新学者,还是准备C++考研复试的学生,或者正在准备C++面试的求职者,都可以来看,电脑手机都可以看,ipad竖屏最佳。总体框架:原创 2020-07-17 11:18:36 · 5311 阅读 · 9 评论 -
这样的宏定义用于变量调试真的没话说(C++)
直接上代码,看注释部分,以及最后的运行结果,你会爱上它注:此段代码除了前面的宏定义部分,其他都引用自《C++语言程序设计》清华大学公开课#include <bits/stdc++.h>using namespace std;//#define D(a) cout<<#a<<endl;a // 在宏定义中,#x 表示变量x的名字,它和函数的不同在于它可以获取变量名,// 调试的时候打印出来看变量值,方便到没话说 ( 最后面分号可加可不加 )#defi原创 2020-05-24 14:59:02 · 543 阅读 · 0 评论 -
LeetCode——14. 最长公共前缀(C++)
题目链接:https://leetcode-cn.com/problems/longest-common-prefix/#include <bits/stdc++.h>using namespace std;// 轮流比对,性能就很可以了 class Solution{ public: string longestCommonPrefix(vector<...原创 2020-04-21 23:00:30 · 365 阅读 · 0 评论 -
LeetCode——11. 盛最多水的容器
题目链接:https://leetcode-cn.com/problems/container-with-most-water/#include <bits/stdc++.h>#include<cstring>using namespace std;// 双重循环,一个代表起点,一个代表终点,该算法性能较差//class Solution//{// p...原创 2020-04-21 22:02:35 · 19507 阅读 · 0 评论 -
LeetCode——9. 回文数
题目链接:https://leetcode-cn.com/problems/palindrome-number/#include <bits/stdc++.h>using namespace std;/*如果会溢出说明一定不是回文数,大家可以思考一些 */class Solution{ public: bool isPalindrome(int x) ...原创 2020-04-21 13:42:14 · 170 阅读 · 0 评论 -
LeetCode——7. 整数反转
第一个是我自己的算法,第二个算法是我目前为止找到的最优解,引用了LeetCode评论区网友"止于至善"的C代码,原链接:https://leetcode-cn.com/problems/reverse-integer/comments/真的厉害,大家可以去看看#include <bits/stdc++.h>using namespace std;// 重点在于判断是...原创 2020-04-21 11:27:46 · 142 阅读 · 0 评论 -
LeetCode——6.Z字形变换(C++)
本题链接:https://leetcode-cn.com/problems/zigzag-conversion/这题一开始看到的时候毫无头绪,后来思考了一会儿,这才发现其中的关键官方解答提供了两种方法,我的算法类似于性能较优的那一个,官网给的那段代码我在debug时遇到错误,不知道咋解决,这里只放我自己的代码,也比较直观#include <bits/stdc++.h>u...原创 2020-04-21 10:44:09 · 282 阅读 · 2 评论 -
虚抽象函数的实现函数是虚还是非虚?
派生类中重写了基类中的虚函数的函数,也是虚函数;派生类中实现了基类中的虚抽象函数的函数,同样也是虚函数。下面就是一个非常简单的例子:#include<iostream>using namespace std;class A {public: // 同样是抽象函数,一个是虚的,一个是非虚,派生类中实现它们的函数也是对应的虚或非虚 virtual void ...原创 2020-04-15 15:08:53 · 145 阅读 · 0 评论 -
不用第三方参数,交换两个参数的值
1、用异或符号^2、加减法#include<iostream>using namespace std;// 异或法 void swap1(int &a, int &b){ a = a ^ b; b = a ^ b; a = a ^ b;}// 加减法 void swap2(int &a, int &b){...原创 2020-04-13 17:01:05 · 305 阅读 · 0 评论 -
【C++】改错题总结(转载)
此篇转载自:https://blog.csdn.net/zjy15203167987/article/details/78313757大家可以去看原文,我这边就是纯自己记录一下。1.直接用形参调用函数, 错因:形参没有权限调用2.在类中不能给数据成员赋初值,经常会有题目在类中给数据成员赋值,注意这种做法是错误的3.用 对象.成员函数(参数1,参数2…) ,考点:在类中没有对象调...转载 2020-04-02 22:12:56 · 2049 阅读 · 0 评论 -
自定义类对象的前置、后置运算符的重载
1、初学前后置运算符重载时,就不是很清楚,两者的格式究竟有什么不同,今天代码调试了一下,发现区别就在于:后置运算符重载时比前置运算符多了一个 int 型的形参,它就是一个标记,用于区别前后置,而且规定一定要是一个 int 型的,至于返回值是否要返回引用型什么的那是具体情境要考虑的东西,要想区分前后置,主要就是看看是否多了一个无用的int型2、除了这个无效的int型之外,其他参数还是照常...原创 2020-04-02 17:36:20 · 520 阅读 · 0 评论 -
LeetCode——4. 寻找两个有序数组的中位数
力扣链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]...原创 2020-03-31 13:57:58 · 210 阅读 · 0 评论 -
LeetCode——2.两数相加
力扣链接:https://leetcode-cn.com/problems/add-two-numbers/给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(...原创 2020-03-31 11:42:00 · 147 阅读 · 0 评论 -
LeetCode——1.两数之和
链接https://leetcode-cn.com/problems/two-sum/1. 两数之和给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = ...原创 2020-03-29 23:32:04 · 156 阅读 · 0 评论 -
LeetCode——628. 三个数的最大乘积(C++)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24我参考了大神的思路寻找到的最优解,这里仅做记录:#include<...原创 2020-03-29 15:33:11 · 453 阅读 · 0 评论 -
LeetCode——计算要删除的列数
给定由N个小写字母字符串组成的数组 A,其中每个字符串长度相等。删除 操作的定义是:选出一组要删掉的列,删去A 中对应列中的所有字符,形式上,第 n列为[A[0][n], A[1][n], ..., A[A.length-1][n]])。比如,有A = ["abcdef", "uvwxyz"],要删掉的列为{0, 2, 3},删除后 A为["bef", "vyz"]...原创 2020-03-28 16:51:50 · 171 阅读 · 0 评论 -
LeetCode——在二叉搜索树中查找某个结点
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1 ...原创 2020-03-28 16:19:37 · 596 阅读 · 0 评论 -
C++ 中真的分值类型和引用类型吗(透彻解析版)
欢迎来拍砖我认为,C++中没有一个类型是可以肯定地说是 值类型 or 引用类型 的,一切取决于你如何使用它,如果你使用指针,哪怕是int型也可以当做引用类型来用。以上是我由思考struct类型所引发的思考的结论,接下来上代码:#include<iostream>using namespace std;struct ss{ int a; int b;...原创 2020-03-28 14:16:02 · 1980 阅读 · 0 评论 -
C++不可跨平台的深入理解
1、C++源程序,经过编译和链接,形成可执行文件编译 过程 实现工具 编译过程 源程序->汇编语言 编译器 汇编过程 汇编语言->机器语言(目标文件obj) 硬件 链接 链接所有的目标文件以及所需库函数等诸多操作,形成可执行文件 链接器 2、汇编语言:汇编语言有不同版本,与平...原创 2020-03-25 14:00:25 · 2818 阅读 · 0 评论 -
boost_1_72_0 安装详解——Windows
第一次在windows装boost,不小心下载了最新版,瞎操作了一番,发现和网上说的都不一样,想再重新装老版本,又怕版本之间有冲突,只好硬着头皮装下去,好在成功了,以下我就分享一下新版boost的安装方法吧,其实大体上换汤不换药的,就是目录结构有变化,第一次装的人可能比较慌。1、下载地址:https://www.boost.org/users/history/version_1_72_0.ht...原创 2020-03-25 12:41:06 · 4774 阅读 · 8 评论 -
STL 官网学习笔记——transform
1、transform提供了两种方法template <class InputIterator, class OutputIterator, class UnaryFunction>OutputIterator transform(InputIterator first, InputIterator last, OutputIt...原创 2020-03-25 00:18:48 · 258 阅读 · 0 评论 -
STL 官网学习笔记——generate
1、需要头文件:algorithm2、对容器[first, last)范围内的元素进行操作,gen是一个无需传参的方法的方法名template <class ForwardIterator, class Generator>void generate(ForwardIterator first, ForwardIterator last, Generator gen);...原创 2020-03-24 22:54:26 · 544 阅读 · 1 评论 -
STL 官网学习笔记—— unique
1、unique,顾名思义,就是给容器内的连续的元素去重,这些连续重复的元素中只保留最前面的那一个注意1:只有当遇到连续重复的元素,它才会起到去重作用,如果是{1, 2, 1},则unique不能对其进行去重 注意2:unique操作不会减少容器的长度,它只是将保留下来的元素从头一一覆盖到容器中去,多出来的部分依旧是可以访问的,这部分需要你自行去删除2、unique是稳定的,去重后,剩余的...原创 2020-03-24 19:47:28 · 317 阅读 · 0 评论 -
C++ 求并集、交集、差集
#include<iostream>#include<iterator>#include<algorithm>using namespace std;int main(){ int a[] = {1, 2, 3, 4, 5, 6}; int b[] = {3, 4, 5, 8, 9, 10}; int N = sizeo...原创 2020-03-24 14:57:56 · 3473 阅读 · 0 评论 -
STL官网学习笔记——set_intersection
练习题有做到 set_intersection 的相关练习,看别人写的看不懂,就找到了STL的官方文档,翻译加总结如下,如果单纯想要实例,可以去后面直接复制粘贴代码。STL的地址:http://stlchina.huhoo.net/stl_doc/set_intersection.html1、set_intersection 是从两个有序序列A、B中找到交集(返回结果也是有序的)2、如果...翻译 2020-03-24 12:25:45 · 1451 阅读 · 1 评论 -
为什么STL要这么设计——严格弱序(stick weak ordering)
如果你想知道严格弱序是什么,推荐看 https://blog.csdn.net/River_Lethe/article/details/78618788我这里要讲的是我关于严格弱序这个设计的思考,STL为何要给它的用户们设置这样一个关卡,给他们找麻烦呢,但其实细想,这个设计是很绝妙的。比方说你在进行数据排序的时候,想要写一个自定义的排序方法,你可以重写大于、小于、大于等于 或者是 小于等于...原创 2020-03-24 11:45:39 · 746 阅读 · 0 评论 -
C++中的映射map——小示例
1、根据key值取value值的方法,和数组根据下标取值一个方法,amap[key]2、根据value取key值,用迭代器从amap.begin()到amap.end()一一遍历,比对iter->second 与 value是否相等3、以下就是一个小例子#include<iostream>#include<string>#include<map...原创 2020-03-23 22:21:12 · 429 阅读 · 0 评论 -
C++拼接方法splice
splice的功能: 将B序列中[b1, b2) 范围内的元素抽调到A序列中的a位置,这个抽调的过程中,A的长度增加了,B的长度减少了。splice有四个参数,用法:A.splice(a, B, b1, b2)以下是一个小示例:实现将 l1 的后几个元素和 l2 的后几个元素对调(里面为什么会用到第三方temp可以思考一下)#include<iostream>#incl...原创 2020-03-23 17:38:25 · 1817 阅读 · 0 评论 -
用C++容器模板解决——约瑟夫问题
以下是《C++语言程序设计》的学习笔记,仅供参考:#include <iostream>#include <vector>#include <iterator>#include<typeinfo>#include<list>#include<deque>using namespace std;// n个骑...原创 2020-03-23 16:29:09 · 653 阅读 · 0 评论 -
终于找到可以调试C++代码的DEVC++版本了
https://sourceforge.net/projects/orwelldevcpp/下载不了,我可以私下发给你原创 2020-03-23 14:31:54 · 1237 阅读 · 3 评论 -
序列式容器——vector
一、介绍1、vector是动态分配的数组,不必程序员手动去扩充数组大小,其原理:填充vector就像扔垃圾,家里的垃圾桶不够放,就倒到小区的大垃圾桶,小区大垃圾桶满了,就有垃圾车来回收,每次都是:分配新空间->复制元素->释放原空间,扩展方式采用倍增方式,通常是2倍增长,比如一开始大小为8,当你添加第9个元素是,它就会先扩展到大小为16,然后添加元素进去,倍数不能取太大,否则浪...原创 2023-10-23 15:08:11 · 173 阅读 · 1 评论 -
函数指针:指向函数的指针
刚学到这一点,记录一下#include <bits/stdc++.h>using namespace std;// 指向函数的指针:函数指针int compute(int a, int b, int(*func)(int, int)){ return func(a, b);}int max(int a, int b){ return ((a > b...原创 2020-03-11 13:01:55 · 129 阅读 · 0 评论