
【C++语言程序设计】
文章平均质量分 94
小巫技术博客
如果你想成功你不应该成为一个普通的可被随意替代的人你应该成为稀缺的不可替代的那类人
展开
-
【可测试性实践】C++单元测试:gtest & gmock
本文通过黄金思维圈来思考引入单元测试带来的价值,并基于C++工程来接入gtest和gmock来完成基础单测和mock场景的使用。写单测的ORI(投入产出比)问题,需要自上而下认可并愿意投入资源写单测需要程序员额外投入时间,并不算做KPI的业绩互联网产品迭代变化快,维护单测成本高国内程序员工程素养参差不齐,单测普及率不高或不知道怎么写存量代码不好测,改造成本较高。原创 2024-09-18 09:13:29 · 2040 阅读 · 0 评论 -
【可测试性实践】C++ 单元测试&代码覆盖率统计入门
最近在调研C++工程怎么做单元测试和代码覆盖率统计,由于我们工程有使用Boost库,尝试使用Boost.Test来实现单元测试并通过Gcov和Lcov来生成代码覆盖率报告。本文记录完整的搭建测试Demo,希望能带来一定参考。原创 2024-09-11 10:48:23 · 1324 阅读 · 0 评论 -
C++ 异步编程之协程代码实践
Boost.Asio是一个用于C++的跨平台库,它提供了一组用于处理异步输入/输出(I/O)的工具和组件。它是Boost库的一部分,一个非常流行的C++库集合,旨在提供可移植且高质量的通用组件。Boost.Asio主要用于网络和低级硬件交互,支持TCP、UDP、串行端口等协议。它不仅限于网络编程,也可以用于构建任何需要异步I/O操作的应用程序,比如文件处理、定时器等。异步I/O是指启动一个I/O操作后,不需要等待其完成即可继续执行其他任务。原创 2024-08-12 09:19:02 · 1278 阅读 · 0 评论 -
C++ 异步编程脉络与示例
C++ 异步编程经历了从回调函数到和,再到现代协程的演变。每一种方式都有其优缺点,理解这些不同的异步编程范式,有助于在实际开发中选择最合适的解决方案。通过不断学习和实践,我们可以更好地应对复杂的异步编程挑战,为用户提供更高效、更可靠的程序。原创 2024-08-04 21:56:41 · 1047 阅读 · 0 评论 -
C++ 入门导引(这是一篇由GPT4写的文章)
C++ 由 Bjarne Stroustrup 在 1980 年代初创立,最初被称为 “C with Classes”。C++ 设计的目的是为了弥补 C 语言在支持抽象结构、代码复用和组织方面的不足。随着时间的推移,C++ 得到了持续的发展,添加了更多高级特性,并形成了目前功能强大的编程语言。原创 2023-05-28 10:01:53 · 1209 阅读 · 0 评论 -
数据结构之希尔排序(谢尔排序)
/**1. 编写一个希尔排序的算法,并且在main函数中验证其功能已实现*希尔排序(Shell's Method)又称“缩小增量排序”,它的基本方法是:*将排序表分成若干组,所有相隔为某个“增量”的记录为一组,在各组内*进行直接排序;初始时增量d1较大,分组越多(每组的记录数少),以后*增量逐渐减少,分组减少(每组的记录数增多),直到最后增量为1,所有*记录放为同一组,怎整体进行一次原创 2011-12-02 20:08:04 · 1996 阅读 · 0 评论 -
求最小公倍数和最大公约数的方法
//书本第四章第01题,分别求出两个整数的最大公约数和最小公倍数,用主函数调用两个函数,并输出结果,两个整数由键盘输入。/* 最小公倍数_--解法一 借助最大公约数求最小公倍数步骤:一、利用辗除法或其它方法求得最大公约数;二、 最小公倍数等于两数之积除以最大公约数。 最小公倍数--解法二质因数分解举例:12和27的最小公倍数 12=2×2×转载 2012-03-19 22:24:57 · 1796 阅读 · 0 评论 -
打印N阶魔阵的程序
/*N阶魔阵是一个N X N的由1到N^2之间的自然数构成的矩阵*它的每一行、每一列和对角线之和均相等。例如,一个三阶*魔阵,它的每一行、每一列和对角线之和均为15: ________ |8 | 1| 6| ———— |3 | 5| 7| ———— |4 | 9| 2| ————编写一个程序打印任原创 2011-12-31 10:53:02 · 1810 阅读 · 0 评论 -
矩阵乘法的程序
//矩阵的乘法//若有A,B两个矩阵,则要求A的列数等于B的行数,这样才能进行矩阵的乘法//代码清单:#includeusing namespace std;#define MAX_SIZE 10 //矩阵的最大规模int main(){ int a[MAX_SIZE][MAX_SIZE],b[MAX_SIZE][MAX_SIZE],c[MAX_SIZE][MAX_SIZ原创 2011-12-31 02:00:29 · 1699 阅读 · 0 评论 -
二分查找程序
//二分查找#includeusing namespace std;int main(){ int lh,rh,mid,x; int array[]={ 0,1,2,3,4,5,6,7,8,9}; cout>x; lh=0; rh=9; while(lh<=rh) //查找区间存在 { mid=(lh+rh)/2; //计算中间位置 if(x==arr原创 2011-12-31 01:01:21 · 1134 阅读 · 0 评论 -
用枚举法解决简单的问题
/**有了循环控制结构,就可以实现一种典型的解决问题的方法--枚举法。*枚举法就是对可能是解的众多候选者按某种顺序进行逐一枚举和检验,*从中找出符合要求的候选解作为问题的解。*//*一个关于我国四大湖的问题:四个同学有以下表述:甲:洞庭湖最大,洪泽湖最小,潘阳湖第三。乙:洪泽湖最大,洞庭湖最小,潘阳湖第二、太湖第三。丙:洪泽湖最小,洞庭湖第三。丁:潘阳湖最大,太湖最小,洪泽湖第原创 2011-12-29 02:01:45 · 3437 阅读 · 0 评论 -
简单统计分数的程序
//设计一个程序,统计某个班级某门考试成绩中的最高分、最低分和平均分。//当输入分数为-1时,输入结束#includeusing namespace std;int main(){ int value,total,max,min,noOfInput; total=0; //总分 max=0; min=100; noOfInput=0; //人数 cout <<原创 2011-12-29 00:54:00 · 1680 阅读 · 0 评论 -
贪婪法
/*贪婪法是一个不追求最优解,只希望得到较为满意的解的方法。因为它省去了为找最优解而穷尽所需的时间,所以贪婪法一般可以快速得到满意的解。贪婪法在求解过程的每一步都选取一个局部最优的策略,把问题规模缩小,最后把每一步的结果合并起来形成一个全局解。*//*贪婪法的基本步骤:(1)从某个初始解出发(2)采用迭代的过程,当可以向目标前进一步时,就根据局部最优策略,得到一部分解,缩小问题规模原创 2011-12-31 00:24:08 · 1377 阅读 · 0 评论 -
简单程序计算无穷级数e^x
//用无穷级数e^x = 1+x+x^2/2!+x^3/3!+……x^n/n!+……计算e^x的近似值//当x^n/n!<0.000001时结束//#includeusing namespace std;int main(){ double ex,x,p; //ex存储e^x的值,p保存当前项的值 int i; cout << "请输入x:"; cin>>x; e原创 2011-12-29 01:09:41 · 8291 阅读 · 0 评论 -
链栈基本运算的实现
//链栈基本运算的实现#includeusing namespace std;typedef char datatype;typedef struct node * pointer; struct node { datatype data; pointer next;}; //链栈结点类型typedef struct { pointer top;} lks原创 2011-11-09 21:52:03 · 2630 阅读 · 0 评论 -
链队列基本运算的实现
//链队列基本运算的实现#includeusing namespace std;typedef char datatype; //队列元素类型,假设为字符型typedef struct node * pointer; //结点指针类型struct node //链队结点结构{ datatype data; pointer next;}; typedef struc原创 2011-11-09 21:55:52 · 2050 阅读 · 0 评论 -
循环队列的基本实现
/*2. 完成对循环队列结构的定义,以及对循环队列的各种基本运算的实现(每种基本运算用一个函数来实现)。基本运算包括:初始化Init_sqqueue运算、判队空Empty_sqqueue运算、入队En_sqqueue运算、出队De_sqqueue运算、取队头元素Gethead_sqqueue运算。*/#includeusing namespace std;typedef ch原创 2011-11-09 22:10:00 · 1886 阅读 · 0 评论 -
C++ Primer 第一章 快速入门笔记
C++ Primer 第一章 快速入门 看到很多人学习这本书都会写下学习过程笔记!因为觉得这是不错的做法,也可以巩固自己学习的知识,还能在以后的学习这本时发现问题,到时也可以到回来修改和补充。 自己在图书馆看完了第一章,小钱问我感觉会不会闷,我说原创 2011-09-19 11:15:47 · 1476 阅读 · 1 评论 -
C++ Primer 第三章 标准库类型 笔记
C++ Primer 第三章 标准库类型标准库类型是我之前没有接触过内容,不仅是这一章,整本书有很多东西对我来说都是新的,谭伯伯那本介绍的东西只是C++中的皮毛罢了。感觉到学习C++将是个无底洞。学到什么程度才算高深,我现在心里没数,只能硬着头皮,踏着那倔强的神经学下去。原创 2011-10-07 13:36:53 · 1319 阅读 · 0 评论 -
C++ Primer 第二章 变量和基本类型 笔记
第二章 变量和基本类型 笔记2.1 基本内置类型——C++定义了一组整数、浮点数、单个字符和布尔值的算术类型,另外还定义了一种称为void的特殊类型。void类型没有对应的值,仅用在有有限的一些情况下,通常用作无返回值函数的返回类型。类型 含义 最小存储空间原创 2011-10-07 13:27:58 · 1631 阅读 · 0 评论 -
C++ 程序设计(谭浩强)教材例题程序
C++程序设计题解与上机指导教材例题程序第一章Ch1-1#include using namespace std;int main(){ cout<<"This is a C++ program."; return 0;}Ch1-2#include using namespace std;int main(){ int a,b, sum; cin>>a>>b原创 2011-10-25 21:22:16 · 6576 阅读 · 2 评论 -
虚函数和抽象基类的应用
/*这个实例是对一个典型例子的改写。在程序中使用虚函数和抽象基类。类的层次结构是抽象基类Shape(形状)。Point(点),Circle(圆),Cylinder(圆柱体)都是Shape类的直接派生类和间接派生类*///下面是一个完整的程序,为了便于阅读,分段插入了一些文字说明。程序如下:第(1)部分#include using namespace std;//声明抽象基类Sh原创 2011-11-23 16:11:30 · 1502 阅读 · 0 评论 -
一个典型的例子
/*这是一个乘上启下的例子。一方面它是有关继承和运算符重载内容的综合应用的例子,通过这个例子可以进一步融会贯通前面所学的内容,另一方面又是作为讨论多态性的一个基础例子。*/#include using namespace std;//声明类Pointclass Point{public: Point(float=0,float=0); void setPoint(float,f原创 2011-11-23 15:44:30 · 1604 阅读 · 0 评论 -
多文件程序的编写
多文件程序包含:头文件.h源文件.cpp主函数.cpp//声明抽象基类Shape//Shape.hclass Shape{public: virtual float area() const { return 0.0; } //虚函数 virtual float volume() const { return 0.0; } //虚函数 virtual void sh原创 2011-11-23 17:21:40 · 1660 阅读 · 0 评论 -
对ASCII文件的操作
ASCII文件又称文本(text)文件或字符文件,它的每一个字节放一个ASCII代码,代表一个字符对ASCII文件的读写操作可以用以下两种方法:(1)用流插入运算符“>”输入输出标准类型的数据。 “>”都已在iostream中被重载为能用于ostream和istream类对象的标准类型的输入输出。由于ifstream和ofstream分别是ostream和istream类的派生类,因此原创 2011-11-26 11:35:33 · 1787 阅读 · 0 评论 -
关于字符串流的学习(c++)
/* 字符串流在字符数组中可以存放字符,也可以存放整数、浮点数以及其他类型的数据。在向字符数组存入数据之前,要先将数据从二进制形式转换为ASCII代码,然后存放在缓冲区,再从缓冲区送到字符数组。从字符数组读数据时,先将字符数组中的数据送到缓冲区,在赋给变量前要先将ASCII代码转换为二进制形式。总之,流缓冲区中的数据格式与字符数组相同。文件流类有ifstream,ofstream和fstrea原创 2011-11-27 21:39:07 · 1422 阅读 · 0 评论 -
异常处理(c++工具)
异常处理异常处理的任务程序编制者不仅要考虑程序没有错误的理想情况,更要考虑程序存在错误时的情况,应该能够尽快地发现错误,消除错误。程序中常见的错误有两大类:语法错误和运行错误。在编译时,编译系统能发现程序中的语法错误。有的程序虽然能通过编译,也能投入运行。但是在运行过程中会出现异常,得不到正确的运行结果,甚至导致程序不正常终止,或出现死机现象。这类错误比较隐蔽,不易被发现,往往原创 2011-11-28 14:36:26 · 1329 阅读 · 0 评论 -
字符串流的简单实例
/*在一个字符数组c中存放10个整数,以空格相间隔,要求将它们放到整型数组,在按大小排序,然后存放回字符数组c中。*/#include#includeusing namespace std;int main(){ char c[50]="12 34 65 -23 -32 33 61 99 321 32"; int a[10],i,j,t; cout<<"arrat c:"<<原创 2011-11-27 21:42:06 · 1556 阅读 · 0 评论 -
简单实例-ASCII文件的读写操作(读入字符,将其中的小写字母改为大写字母)
/*从键盘读入一行字符,把其中的字母字符依次存放在磁盘文件f2.dat中。再把它从磁盘文件读入程序,将其中的小写字母改为大写字母,在存入磁盘文件f3.dat*/#include#includeusing namespace std;//save_to_file函数从键盘读入一行字符,并将其中的字母存入磁盘文件void save_to_file(){ ofstream outfil原创 2011-11-27 19:41:01 · 2787 阅读 · 0 评论 -
对二进制文件的操作(c++ 程序设计 by 谭浩强 课本实例)
//将一批数据以二进制形式存放在磁盘文件中#include#includeusing namespace std;struct student{ char name[20]; int num; int age; char sex;};int main(){ student stud[3]={"Li",1001,18,'f',"Fun",1002,19,'m',"Wang"原创 2011-11-27 20:21:28 · 2063 阅读 · 3 评论 -
C++ Primer中文版(第4版)的初了解
作者简介:Stanley B.Lippman的职业是提供关于C++和面向对对象的训练、咨询、设计和指导。他在成为一名独立咨询顾问之前,曾经是迪士尼动画公司的首席软件设计师。当他在AT&T Bell实验室的时候,领导了cfront 3.0版本和2.1版本的编译器开发组。他也是B原创 2011-09-15 22:16:38 · 1436 阅读 · 0 评论