
C++基础
Luncles
别再熬夜!
展开
-
Linux发送数据包的流程图
原创 2023-09-10 00:20:34 · 190 阅读 · 0 评论 -
当主线程退出时,子线程会怎么样?
例如一个程序a.out创建了一个子线程,假设主线程的线程号为9601,子线程的线程号为9602(它们的tgid都是9601),因为默认没有设置信号处理程序,所以如果运行命令kill 9602的话,是可以把9601和9602这个两个线程一起杀死的。实际上,posix线程和一般的进程不同,在概念上没有主线程和子线程之分(虽然在实际实现上还是有一些区分),如果仔细观察apue或者unp等书会发现基本看不到「主线程」或者「子线程」等词语,在csapp中甚至都是用「对等线程」一词来描述线程间的关系。转载 2023-08-22 21:19:59 · 1170 阅读 · 0 评论 -
红黑树的使用场景
原创 2023-07-12 03:02:52 · 588 阅读 · 0 评论 -
浅谈 C++ 中的 new/delete 和 new[]/delete[]
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?如果你对这些问题都有疑问的话,不妨看看我这篇文章。转载 2023-06-25 02:12:53 · 121 阅读 · 0 评论 -
C++中的insert()与迭代器
这段时间断断续续地重读C++ Primer,发现了一个比较有趣的点,309页的练习9.22这道题: 此题共有两个错误,一个是while陷入了死循环,因为insert()函数返回的是插入点之前的迭代器,因此while循环的条件永远为真,这是比较明显的;另一个错误是mid这个迭代器会失效,这是比较值得研究的点,对此github上Cpp-Primer项目的几个contributor也展开了讨论,现将其总结为本文。如同书里315页的9.3.6所说...原创 2021-11-05 17:51:10 · 1373 阅读 · 0 评论 -
C++要点(C++ Primer)
1、读取数量不定的输入数据while (std::cin >> value) {}2、编译器的错误信息通常包含一个行号和一个简短的描述,按照报告的顺序逐个修成错误是一种好习惯。因为一个单个错误常常会具有传递效应,导致编译器在其后报告比实际数量多得多的错误。另一个好习惯是在没修正一个错误后就立即重新编译代码,或者最多是修正了一小部分明显的错误后就重新编译,这就是所谓的“编辑-编译-调试”周期。3、执行浮点数运算一般用double类型,因为float类型一般精度不够,而且双精度浮点型.原创 2021-06-22 00:51:16 · 154 阅读 · 0 评论 -
C++要点(C++ Primer)
1、读取数量不定的输入数据while (std::cin >> value) {}2、编译器的错误信息通常包含一个行号和一个简短的描述,按照报告的顺序逐个修成错误是一种好习惯。因为一个单个错误常常会具有传递效应,导致编译器在其后报告比实际数量多得多的错误。另一个好习惯是在没修正一个错误后就立即重新编译代码,或者最多是修正了一小部分明显的错误后就重新编译,这就是所谓的“编辑-编译-调试”周期。3、执行浮点数运算一般用double类型,因为float类型一般精度不够,而且双精度浮点型和原创 2021-06-22 00:49:13 · 181 阅读 · 0 评论 -
C++ Primer——decltype类型指示符
decltype是C++11引入的类型说明符,作用是选择并返回操作数的数据类型decltype(f()) sum = x; //sum的类型就是函数f的返回类型编译器并不实际调用函数,而是使用当调用发生时f的返回值类型作为sum的类型。const int ci = 0, &cj = ci;decltype(ci) x = 0; //x的类型是const intdecltype(cj) y = x; //y的类型是const int&,y绑定到...原创 2021-04-26 02:16:06 · 227 阅读 · 0 评论 -
西工大17年计算机机试真题
前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-输入两组时间(h,m,s),计算平均时间,两组时间不超过一个小时,h在0-11之间/* *题目:输入两组时间(h,m,s),计算平均时间,两组时间不超过一个小时,h在0-11之间 *Input: 1 20 30 1 30 30 0 20 30 11 30 30 *Output: 1 25 30 11 55 30 */...原创 2021-03-18 03:35:41 · 424 阅读 · 0 评论 -
西工大18年计算机机试真题
前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-求积:给定n组数,每组两个整数,输出这两个整数的乘积/* *题目:求积:给定n组数,每组两个整数,输出这两个整数的乘积 *Input: 2 1 1 2 3 *Output: 1 6 */#include <iostream>using namespace std;int NoO...原创 2021-03-16 14:23:16 · 337 阅读 · 0 评论 -
西工大19年计算机机试真题
前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-整数排序(快速排序)/* *题目:一组整数,由小到大排序,有n组测试数据,排序输出 *输入样例: 2 1 5 8 6 3 2 0 4 2 3 8 15 63 20 1 *输出: 0 1 2 3 5 6 8 1 2 3 4 8 15 20 63 */#include <...原创 2021-03-14 18:55:01 · 553 阅读 · 0 评论 -
西工大noj(38~40)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过38题-逆序整数/* *题目:用递归法将一个长整型数n逆序输出,例如输入483,输出384,n的位数不确定,可以是有效范围内的任意位数 */#include <iostream>using namespace std;int rever(long int n){ cout << n % 10; n /= 10; if (n !=...原创 2021-03-11 13:56:44 · 1320 阅读 · 0 评论 -
西工大noj(37)
37题-重温A+B(这道题对我最大的价值就是复习了对输入非法和输出溢出的判断以及相应的处理)/* *题目:A和B都是由3个整数组成,分别表示时、分、秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时45分钟56秒 输入数据每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒 输出A+B,每个输出结果也是由时分秒3部分组成,同时分和秒的取值范围为0~59,每个输出占一行,并且所有的部分都可以用32位整数表示 */#in原创 2021-03-10 02:34:21 · 465 阅读 · 0 评论 -
西工大noj(34~36)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过34题- 发工资的日子/* *题目:如果每个员工工资都知道,那么最少需要准备多少人民币,才能给每位员工发工资的时候不用员工找零呢? 假设员工的工资都是正整数,单位元,人民币一共有100元,50元,10元,5元,2元和1元六种 */#include <bits/stdc++.h>using namespace std;int noj_034(){ ...原创 2021-03-07 00:57:19 · 1059 阅读 · 0 评论 -
西工大noj(31~33)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过31题-计算方差(题目要求不能用数组,所以此处用的是公式的拆项)/* *题目:编写函数计算 s=(x1-x)^2+(x2-x)^2+……+(xn-x)^2,其中x为x1,x2……的平均数,不能用数组(保留6位小数) *备注:题目要求不能用数组存储xi的值,所以此处把公式拆开,例如: s=(x1-x)^2+(x2-x)^2=(x1^2+x2^2)+2*x^2-2*x*(x1+x2)=s...原创 2021-03-06 02:11:00 · 1056 阅读 · 0 评论 -
西工大noj(27~30)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过27题-不重复数字组合排列(采用了和23题差不多的方法)/* *题目:用1~9组成3个3位数,abc,def和ghi,每个数字恰好使用了1次,要求adc:def:ghi=1:2:3,输出所有解 */#include <iostream>#include <vector>using namespace std;int noj_027(){ in...原创 2021-03-04 01:19:47 · 1202 阅读 · 1 评论 -
西工大noj(25,26)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过25题-羊羊的聚会/* *题目:见上图 */#include <iostream>using namespace std;int noj_025(){ int myyPosi, fyyPosi, myySpeed, fyySpeed, len, hour = 1; cout << "请依次输入美羊羊坐标,沸羊羊坐标,美羊羊速度,...原创 2021-03-03 03:34:54 · 1351 阅读 · 0 评论 -
西工大noj(23~24)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过23题-不重复数字除法(有点繁琐,暂时只想到了暴力法,在判断各位数字是否重复采用了桶排序的思想):/* *题目:输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好是0~9的排列,2<=n<=79 */#include <iostream>#include <vector>using namespace s...原创 2021-03-02 01:36:21 · 1007 阅读 · 0 评论 -
西工大noj(21,22)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过21题:/* *题目:有a和b两种粒子,每秒钟内一个a粒子可以裂变为3个b粒子,而一个b粒子可以裂变为1个a粒子和2个b粒子,若在t=0时刻中只有一个a粒子,求在t秒时产生的a粒子和b粒子数,输入t */#include <iostream>using namespace std;int noj_021(){ int time; int aPart ...原创 2021-02-28 02:51:46 · 1005 阅读 · 0 评论 -
西工大noj(11~20)
前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过11题:/* *题目:用二分法求方程在(-10,10)之间的根(保留2位小数) */#include <iostream>#include <stdio.h>using namespace std;int noj_011(){ double x, left = -10, right = 10; x = (left + right) / 2;...原创 2021-02-26 01:35:54 · 1500 阅读 · 0 评论 -
西工大noj(2~10)
西工大noj刷题记录代码在CodeBlocks16.01环境下编译通过原创 2021-02-23 01:48:20 · 5654 阅读 · 0 评论 -
C++ Primer——面向对象程序设计
1、在C++中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待。对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数(virtual function)。2、在C++中,当我们使用基类的引用(或指针)调用一个虚函数时将发生动态绑定。3、关键字virtual只能出现在类内部的声明语句之前而不能用于类外部的函数定义。如果基类把一个函数声明成虚函数...原创 2020-03-02 17:59:10 · 184 阅读 · 0 评论 -
C++ Primer——对象移动
1、标准库容器、string和shared_ptr类既支持移动也支持拷贝。IO类和unique_ptr类可以移动但不能拷贝。2、变量是左值,因此我们不能将一个右值引用直接绑定到一个变量上,即使这个变量是右值引用类型也不行。3、使用move的代码应该使用std::move而不是move。4、不抛出异常的移动构造函数和移动赋值运算符必须标记为noexcept。5、除了将移后源对象置为析...原创 2020-03-02 15:25:22 · 261 阅读 · 0 评论 -
C++ Primer——拷贝控制
1、如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。一般情况下,合成的拷贝构造函数会将其参数的成员逐个拷贝到正在创建的对象中。编译器从给定对象中依次将每一个非static成员拷贝到正在创建的对象中。2、每个成员的类型会决定其如何拷贝:对类类型成员来说,会使用其拷贝构造函数来拷贝;对内置类型的成员则直接拷贝。3、拷贝初始化通常使用拷贝构造函...原创 2020-02-25 11:29:17 · 195 阅读 · 0 评论 -
C++ Primer——析构函数
知识点:1、构造函数初始化对象的非static数据成员,还可能做一些其他的工作;析构函数释放对象使用的资源,并销毁对象的非static数据成员。2、析构函数是类的一个成员函数,名字由波浪号接类名构成。没有返回值,也不接受参数,因此不能被重载。3、对于一个给定类,只会有唯一一个析构函数。4、在一个构造函数中,成员到初始化是在函数体执行之前完成的,且按照它们在类中出现的顺序进行初始化。...原创 2020-02-24 12:01:47 · 336 阅读 · 0 评论 -
C++ Primer(第五版)第12章例程(文本检索)
前言:最近又开始看起了C++ Primer,第十二章的最后有个文本检索的例程,参考网上的资料把例程写了一下并简单地做了注释。顺带一提,虽然别人都说真正的大佬都是用编辑器+插件来写代码,但是用了一段时间的vim,还是觉得装再多的插件,编辑器始终是编辑器,还是没有ide好用,所以在这台老爷机上装了个codeblocks,除了偶尔死机外,真的极大提高了我的效率,vim的话,还是在命令行模式里再用吧,当然装了插件之后,也还蛮不错的。原创 2020-02-21 11:50:32 · 307 阅读 · 0 评论 -
C++中const在不同对象不同位置中的作用
一、 const与define 两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)二、 const与指针,引用(a)const与指针...转载 2020-02-18 14:10:18 · 357 阅读 · 0 评论