![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++学习专栏
文章平均质量分 62
C++语言基础能力提升,致力于构建一个C++语言学习交流的平台,希望大家多多提意见~~
笑着的程序员
种树最好的时间是十年前,其次是现在
展开
-
华为OD机试2023 最新最全备考攻略助你轻松上岸
华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。薪资对华为OD也是有绝对的优势。原创 2023-05-26 23:35:00 · 1546 阅读 · 0 评论 -
数据结构与算法之排序(你不得不知道的排序算法)
这段代码实现了冒泡排序算法,其时间复杂度为On2。冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换的元素,也就是说该数列已经排序完成。在这段代码中,bubbleSort函数中的外层循环执行了n次,内层循环执行了n-1次,因此总的时间复杂度为On2。虽然冒泡排序的时间复杂度较高,但是它实现简单,对于小规模的数据排序效果还是不错的。原创 2023-05-15 23:12:31 · 226 阅读 · 0 评论 -
你以为你真的理解“Hello world“是怎么输出的吗
程序在进程中运行,当程序执行到printf语句时,会将字符串"Hello, world!\n"写入到标准输出流(stdout)中,最终在控制台上输出"Hello, world!在这个程序中,我们使用了标准库头文件,其中包含了printf函数的声明。在main函数中,我们调用了printf函数,将字符串"Hello, world!最后,我们使用return语句返回0,表示程序正常结束。其中,第一个参数format是一个字符串,用于指定输出的格式,后面的参数是可变参数,用于指定输出的内容。原创 2023-05-02 19:38:04 · 138 阅读 · 0 评论 -
【C++代码之美】你不得不知道的经典代码
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……原创 2023-04-27 23:58:01 · 4671 阅读 · 2 评论 -
【华为OD机试真题 2022&2023】真题目录 已支持(C++&Java&python)100%通过率
已支持(C++&Java&python)100%通过率 超详细代码注释 代码深度解读原创 2023-04-05 23:57:23 · 7640 阅读 · 27 评论 -
【C++中特定格式的输出】
【代码】【C++中特定格式的输出】原创 2023-04-30 16:38:18 · 219 阅读 · 1 评论 -
【C++中关于abs()函数的告警问题】“abs“ is ambiguousC/C++(266)
去尝试包含了< cstdlib>这个头文件,发现问题并没有解决,另外我也没发现我的代码有包含 < cmath >或者,所以断定这个问题和我的不一样。这个问题是函数调用中的参数和函数声明中的参数不匹配,我尝试了一下仍然不行。按照上述方法修改,问题最终解决。原创 2023-04-16 22:57:08 · 1613 阅读 · 0 评论 -
C++ Primer Plus第六版-第四章-学习笔记
C++ Primer Plus第六版-第四章-学习笔记#C++ Primer Plus第六版第四章学习笔记你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。4.1 数组C++允许在声明语句中初始化数组元素。int yamcosts[3] = {20, 30, 5};...原创 2019-12-08 21:44:21 · 491 阅读 · 1 评论 -
C++ Primer Plus第六版-第八章-学习笔记
8.1 内联函数内联函数:只有一行代码的小型非递归函数内联函数的运行速度比常规函数稍快,但代价是占用更多的内存。内联函数的使用:在函数声明前加上关键字inline 或者在函数定义前加上关键字inline内联函数按值传递参数8.2 引用变量引用是已定义的变量的别名引用变量的主要用途是用作函数的形参。通过将引用变量用作参数,函数将使用原始数据。这样除指针之外,引用也为函数处理大型...原创 2019-12-16 08:43:40 · 289 阅读 · 2 评论 -
C++ Primer Plus第六版-第十章-学习笔记
第 10 章 对象和类10.2 抽象和类指定基本类型完成3项工作:决定数据对象需要的内存数量决定如何解释内存中的位(long和float在内存中占用的位数相同,但将它们转化为数值的方法不同)决定可使用数据对象执行的操作和方法对于内置类型来说,有关操作的信息被内置到编译器中。但在C++中定义用户自定义的类型时,必须自己提供这些信息。C++中的类类是一种将抽象转换为用户定义类型的...原创 2019-12-20 08:47:55 · 545 阅读 · 1 评论 -
C++ Primer Plus第六版-第十一章-学习笔记
第 11 章 使用类不要觉得必须使用所有的特性,不要在第一次学习时就试图使用所有的特性。 ——Bjarne Stroustrup11.1 运算符重载要重载运算符,需要使用被称为运算符函数的特殊函数形式。operator p(argument-list)如果distric2、sid和s...原创 2020-02-05 21:38:10 · 302 阅读 · 2 评论 -
经典的大数的加法、减法、乘法及阶乘
大数加法题目简要描述:I have a very simple problem for you.Given two integers A and B,your job is to calculate the Sum of A + B.输入:第一行输入一个整数T(1<=T<=20)表示随后要输入的测试数字对的数目接下来T行,输入的是测试数字对输出:对于每一组测试数据,你应该输出两行,第一行"case #:",‘#’号代表输出的是第几组数据输出的第二行是一个等式"A+B=Sum",每原创 2020-06-09 00:30:03 · 826 阅读 · 2 评论 -
华为面试题整理
华为面试题整理**只出现一次的数字 **给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?解法:要求时间复杂度O(N),空间复杂度O(1)满足上述要求的解法,目前只有位运算法:根据位运算异或的性质,可以得到以下的规律:a ^ 0 = a;a ^ a = 0;a ^ b ^ c = a ^ c ^ b;class Solution {public: int原创 2023-04-07 15:02:32 · 530 阅读 · 0 评论 -
利用VSCode、MinGW和Cmake搭建C++编译环境
利用VSCode、MinGW和Cmake搭建C++编译环境目前为止,尝试过使用过多种IDE,比如Visual Studio、Codeblocks以及轻量化IDE Atom和Vscode,其实对于新手来说,Visual Studio已能满足日常编程需求,并且功能非常强大,易用,但不足之处在于体量过于庞大,占用电脑大量内存,且运行期间稍有卡顿。所以有不少人转而投向使用Vscode等轻量的编辑器来搭建...原创 2023-04-07 14:42:23 · 488 阅读 · 1 评论 -
力扣上的两个全排列的题目
力扣上的两个全排列的题目题目描述: 给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int原创 2021-03-26 23:50:08 · 215 阅读 · 0 评论 -
快速排序方法及其应用(最小的k个数)
快速排序方法及其应用(最小的k个数)快速排序是一种比较好的排序方法,时间复杂度为O(nlgn)。快速排序方法中最主要的函数是Partition函数,Partition函数的作用是函数运行完之后,返回值位置及前面的数值都比后面的小,即如下代码中small位置及前面的 值都比small后面的值小。int Partition(int* number, int length, int start, int end){ if (number == nullptr || length <= 0 ||原创 2021-03-24 16:42:07 · 283 阅读 · 0 评论 -
单链表插入排序(C++)
单链表插入排序(C++)本题的难点在于,要给链表创建一个不赋值而只是为了方面插入的头节点#include <iostream>struct ListNode{ int m_Value; ListNode* p_Next;};ListNode* InsertSort(const int* numbers, int length){ ListNode* pNode = new ListNode();//一个不赋值的链表头 ListNode* pHea原创 2021-03-18 00:55:40 · 1625 阅读 · 0 评论 -
关于cin.peek()用法的总结
关于cin.peek()用法的总结cin.peek()的返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测指针停留在当前位置并不后移;如果要访问的字符是文件结束符,则函数值是EOF(-1)#include<iostream>using namespace std;int main() { int sum = 0; int c; while (cin >> c) { sum += c; while (cin.peek() == ' ') {原创 2020-08-25 21:58:51 · 7630 阅读 · 0 评论 -
关于stringstream中clear()用法的进一步总结
关于stringstream中clear()用法的进一步总结clear()到底能不能清除流的状态:大家看一下:#include <iostream>#include <sstream>using namespace std;int main(){ stringstream stream; int first, second,third; stream << "123";//插入字符串 stream >> first原创 2020-08-18 11:21:22 · 3126 阅读 · 1 评论 -
关于二叉树四种遍历方式的核心代码
关于二叉树四种遍历方式的核心代码1、前序遍历//preOrder:void PrintInOrder(BinaryTreeNode* pNode){ if (pNode == nullptr) return; BinaryTreeNode* pCurrent = pNode; std::cout << pCurrent->m_Value << " "; if (pCurrent->p_Left != nullptr) PrintInOrder原创 2020-08-17 22:36:22 · 201 阅读 · 1 评论 -
关于vector赋值的问题总结(c++)
关于vector赋值的问题总结(c++)具体用法如下,其实有一点比较重要,就是可以中下面代码中std::vector<double>y(n);//给定vector大小这种形式在一定程度上代替数组,因为指定数组的大小必须要为常量,vector可以已有确定值的变量。#include <iostream>#include <vector>int main(){ int n; std::cin >> n; std::vector<double&原创 2020-08-16 18:47:31 · 1498 阅读 · 1 评论 -
C++中sort()与qsort()相关用法的总结
C++中sort()与qsort()相关用法的总结关于排序问题,平时我们在工作中会经常遇到,刚好最近看了几个关于库函数排序的博客,觉得写得都不错,为了方便今后能够方便使用,今天就花点时间总结一下(其实前段时间对于sort的用法也写过两个博客),sort()与qsort()的时间复杂度都为O(nlogn),都算是比较好的排序方法关于sort使用方法的讨论(把数组排成最小的数)华为OJ-奥运会排行榜C++关于排序qsort()排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等。 看名字都知道原创 2020-07-29 17:14:37 · 213 阅读 · 0 评论 -
关于sort使用方法的讨论(把数组排成最小的数)
关于sort使用方法的讨论(把数组排成最小的数)上次提及sort的用法是在华为OJ-奥运会排行榜C++当中,重新定义operator<()函数之后,使用sort(ranks.begin(), ranks.end());便生效了本文在此讨论sort的用法,是因为发现同样的方法在下面的这道题目上不好用了(原因暂不清楚)随后搞明白之后再做补充题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成原创 2020-07-18 12:28:41 · 286 阅读 · 0 评论 -
一篇文章带你对全排列从入门到精通
从n个数中选取m个数的组合及全排列题目描述:给定两个整数n、m,输出从(1,2,…,n)中选出m个数的所有组合。输入:每个测试文件含有多个数据,输入两个整数n,m(0<m<=n<=10)。输入到文件末尾结束。输出:输出对应的组合数,每个组合中的数字由小到大排列,对于每组数据的所有组合按字典序排序/下面这个组合代码能够满足字典排序输出#include <iostream>using namespace std;int n, m, lst[10] = {0};原创 2020-07-18 00:24:11 · 5028 阅读 · 1 评论 -
C++中关于count的用法总结
C++中关于count的用法总结下面是关于字符串中count的两种用法,STL容器,数组的用法类似#include <iostream>#include <string>#include <algorithm> //countusing namespace std;int main(){ string m = "1233445"; //int n = count(m.data(), m.data()+m.size(),'3'); i原创 2020-07-15 17:05:03 · 5829 阅读 · 1 评论 -
关于accumulate的用法(累加和累乘)
关于accumulate的用法(累加和累乘)从1到10累加#include <iostream>#include <numeric>using namespace std;template<class T>T product(T a[], int n){ T theProduct = 0; return accumulate(a, a+n, theProduct);}//multiplies<T>()int main()原创 2020-06-27 18:16:42 · 1991 阅读 · 0 评论 -
最大公约数和最小公倍数的经典求法(C++)及例题实战练习
最大公约数和最小公倍数的经典求法(C++)最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数求最小公倍数算法:最小公倍数=两整数的乘积÷最大公约数辗转相除法#include <iostream>using namespace std;int main(){ int m, n, a, b, c; cout << "Input two i原创 2020-06-07 18:10:33 · 3347 阅读 · 1 评论 -
史上最全的整数分解方法(包含经典的分苹果问题)
整数分解方法总结题目描述:给定一个正整数,我们可以定义出下面的公式:N=a[1]+a[2]+a[3]+...+a[m];a[i]>0,1<=m<=N;对于一个正整数,求解满足上面公式的所有算式组合对于整数4:4 = 4;4 = 3+1;4 = 2+2;4 = 2+1+1;4 = 1+1+1+1;所有可能的分解输出(有重复)方法一:#include <iostream>using namespace std;const int Size = 20原创 2020-06-07 12:51:09 · 7967 阅读 · 3 评论 -
关于stringstream的用法总结
关于stringstream的用法总结将整形转化成字符串#include <iostream>#include <sstream>using namespace std;string i2s(int i, int len = 0){ stringstream ss; ss.width(len); //设置宽度 ss.fill('0'); //填充'0' ss << i; return ss.str();}int m原创 2020-06-02 21:16:41 · 2472 阅读 · 0 评论 -
合并两个有序数组C++
合并两个有序数组题目描述:有两个排序的数组A1和A2,内存在A1的末尾有足够的空余空间容纳A2。请实现一个函数,把A2中的所有数字插入到A1中,并且所有的数字是排序的。思路分析:从尾到头边比较,边移入正确的位置,时间复杂度为O(n)#include <iostream>using namespace std;void Combin2Array(int str1[], int length1, int str2[], int length2){ if (str1 == nullp原创 2020-05-30 22:45:15 · 1333 阅读 · 0 评论 -
codeblocks简单的背景及字体设置(及默认工作路径设置)
codeblocks简单的背景及字体设置(及默认工作路径设置)一、字体设置二、代码背景设置三、光标宽度及颜色设置四、左侧行号颜色、背景及行号与代码块之间背景设置五、默认工作路径设置最后效果...原创 2020-05-23 18:26:37 · 2635 阅读 · 3 评论 -
OJ简单的一个问题-输出表格
OJ简单的一个问题-输出表格第一行输出两个整数n, m,分别表示要输出的方格行数和列数,方格的行为"±–+"列为’|’输出为n行m列的方格代码如下:#include <iostream>#include <string>using namespace std;int main(){ int n, m; cin >> n >> m; string row{"+---"}; string column{"|原创 2020-05-21 22:07:35 · 197 阅读 · 0 评论 -
华为OJ-奥运会排行榜
华为OJ-奥运会排行榜第一行输入参赛国家数n;第二行至n+1行输入国家名字及金银铜牌数量,并以空格隔开;按照金牌数量、银牌数量、铜牌数量、国家名字母的优先级依次递减排序;主要是考察sort的用法#include <iostream>#include <string>#include <vector>#include <algorithm>using std::cin;using std::cout;using std::endl;原创 2020-05-18 23:02:39 · 782 阅读 · 1 评论 -
关于二叉树的构建及基本操作
关于二叉树的构建及基本操作struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};BinaryTreeNode* CreateBinaryTreeNode(int value);void ConnectTreeNodes(BinaryTreeNode* pParent, BinaryTreeNode* pLeft, BinaryTreeNode* pRight);vo原创 2020-05-17 20:44:55 · 131 阅读 · 0 评论 -
关于链表的构建及基本操作
关于链表的构建及基本操作struct ListNode{ int m_nValue; ListNode* m_pNext;}; ListNode* CreateListNode(int value); void ConnectListNodes(ListNode* pCurrent, ListNode* pNext); void PrintListNode(ListNode* pNode); void PrintList(ListNode* pHead); void Des原创 2020-05-17 20:42:19 · 201 阅读 · 0 评论 -
单链表的生成方法(C++)及单链表遍历一次中值查找
方法一:从前面插入LinkList *s, *L;int i;L = new LinkList();L->next = nullptr;for (i = 0; i < n; ++i){ s = new LinkList(); std::cin >> s->data; s->next = L->next; //每次都在L后面插入一个节点 L->next = s; }对应的完整代码如下:#includ原创 2020-05-15 08:02:32 · 891 阅读 · 0 评论 -
C++ Primer Plus第六版-第十二章-学习笔记
第12章 类和动态内存分配静态类成员有一个特点:无论创建了多少对象,程序都只创建一个静态变量副本静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域运算符来指出静态成员所属的类。但如果静态成员是const整数类型或枚举类型,则可以在类声明中初始化。在构造函数中使用new来分配内存时,必须在相应的析构函数中使用delete来释放内存。如果使用new[](包括中括号)来分配...原创 2020-04-24 08:18:54 · 270 阅读 · 2 评论 -
C++ Primer Plus第六版-第九章-学习笔记
第 9 章 内存模型和名称空间9.1 单独编译原创 2020-03-22 11:22:48 · 189 阅读 · 0 评论 -
函数指针(C++ Primer Plus 第七章)
关于本书中,第七章的一个比较难理解的函数指针声明函数指针通常,要声明指向特定类型函数的指针,可以首先编写这种函数的原型,然后用(*pf)替换函数名。这样pf就是这类函数的指针。double (*pf)(int);const double* f1(const double*, int n); //f1为返回值为const double*的函数const double* (*pa)(con...原创 2020-03-21 17:08:23 · 425 阅读 · 2 评论