c++
文章平均质量分 80
cout丶shy
这个作者很懒,什么都没留下…
展开
-
【“宏孩儿”入门】通过宏定义将类型和函数结构解耦
想象这样一个场景,我们有一个表结构体StudentInfo,同时用数组存储它作为一张表,我们需要提供一套根据Key来增删改查的函数操作这张表。我们仔细观察增删改查函数时会发现,除了操作的表,key不同外,代码结构上是相同的,那怎么让表和函数结构解耦呢?(这里可能有聪明的小伙伴会想到为什么不用哈希表来存储,这样不就自带一套根据Key来增删改查函数了吗?是的一般情况下可以这样,但也有些情景下不能使用哈希表,比如UE中TSet不支持同步。因为表可能是私有成员同时还需要用到表的key,所以用模板还不太好解决。原创 2023-07-03 16:47:41 · 193 阅读 · 0 评论 -
C++ 使用Socket实现主机间的UDP/TCP通信
服务器端的代码做了跨平台(POSIX和WINDOWS),基于POSIX平台(Linux、Mac OS X、PlayStation等)使用sys/socket.h库,windows平台使用winsock2.h库。客户端代码因为基本都在windows运行,所以没做跨平台,需要的话你可以参考服务器端代码自己做一下。文中写的函数原型均为windows平台,部分函数的返回类型或参数类型在POSIX会有不同。原创 2023-01-03 14:06:23 · 3464 阅读 · 5 评论 -
C/C++中sizeof对指针和数组结果的区别
C/C++中sizeof对指针和数组结果的区别大家都知道sizeof(data)是用于求data的所占内存大小的,那么sizeof求申请了20字节内存的指针和开辟了20单位的字符数组的结果分别是什么,以及sizeof求内存大小的原理是什么,是预先就知道大小信息还是计算而得呢?先写一个程序测试一下:运行结果如图:因为指针里存储的是地址,所以不管是什么类型的指针,在64位系统下所占内存都是...原创 2019-07-25 22:33:08 · 760 阅读 · 0 评论 -
c++中类的数据成员初始化次序
c++中类的数据成员初始化次序今天学了一个知识点,感觉还挺重要的,就是当一个类中的某个数据成员同时拥有就地初始化、构造函数初始化列表和构造函数函数体里的赋值,那么它会先执行哪个?最后生效的又是哪个呢?根据老师的讲解,数据成员的初始化次序依次为:就地初始化 > 构造函数的初始化列表 >构造函数里的赋值(严格意义上不能成为初始化)而当三种初始化方式都有时,构造函的函数体里的赋值肯定...原创 2019-07-30 20:35:32 · 621 阅读 · 0 评论 -
【C++】访问的控制与继承
访问说明符访问修饰符本类内友元子类内类外private√√××protected√√√×public√√√√样例:#include<iostream>using namespace std;class A { int a; //默认为privatepublic: int b;protected: int c;private: int d;public: void func() { //类内都原创 2022-05-12 09:42:29 · 306 阅读 · 0 评论 -
【洛谷习题】P5318 【深基18.例3】查找文献
题目描述小K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个(也有可能没有)参考文献的链接指向别的博客文章。小K 求知欲旺盛,如果他看了某篇文章,那么他一定会去看这篇文章的参考文献(如果他之前已经看过这篇参考文献的话就不用再看它了)。假设洛谷博客里面一共有 n(n<10510^5105) 篇文章(编号为 1 到 n)以及 m(m<10610^6106)条参考文献引用关系。目前小 K 已经打开了编号为 1 的一篇文章,请帮助小 K 设计一种方法,使小 K 可以不重复、不遗漏的看完所有他能看到原创 2020-09-16 18:43:57 · 713 阅读 · 0 评论 -
蓝桥杯11届B组H题-走方格
题目问题描述 在平面上有一些二维的点阵. 这些点的编号就像二维数组的编号一样,从上到下依次为第1至第n行。从左到右依次为第1至第m列,每一个点可以用行号和列号来表示。 现在有个人站在第1行第1列,要走到第n行第m列。只能向右或者向下走。 注意,如果行号和列号都是偶数,不能走入这一格中。 问有多少种方案。输入格式输入一行包含两个整数n,m。输出格式输出一个整数,表示答案。样例输入3 4样例输出2思路看见走方格的题,首先就想到了用dfs或bfs来解决,但是该题并不是求最原创 2020-07-05 15:40:49 · 603 阅读 · 0 评论 -
用对数器测试算法是否正确
float xn,xm; //到达边缘前,每段走的n和m int yun,yum; //剩余距离 int ixn,ixm;bool lowd(float n,float m,float d){ return n*n+m*m <= d*d;}int func1(int n,int m,int d){ n--;m--; int t = 0; int r = 0,c = 0; //小明的坐标 xn = d/sqrt(n*原创 2020-05-08 16:23:43 · 239 阅读 · 0 评论 -
动规习题-间隔选数求最大和
题目现有一个含有n个正整数的数列,从中选择任意个数,但选了第i个数,就不能选第i-1和第i+1的数,求选择的数的最大和。输入第一行为一个n,表示数的个数,第二行为n个数表示数列输出选数最大和。样例输入:54 1 1 9 1样例输出:13思路先根据题意想递推式,从左到右遍历,每一个数都有选与不选两个选项,那么求前i个数的最大选数和opt(i),可以分为选第i个数和不选,如果选了,...原创 2020-05-08 16:06:08 · 836 阅读 · 0 评论 -
十一届蓝桥杯省模拟赛第十题(淹没城堡)
题目有一片长n宽m的地方,上面有n个方块,该地图是立体的,所以方块可以叠加,地图数值代表在该坐标下有叠加的方块个数,现在有高h的水要淹没这片地方,请输出从水高度为1~h,被淹没的方块个数分别为多少。样例输入输入第一行为n和m,表示地图长和宽,然后是n行,每行m个数表示方块个数,最后一行输入一个h表示水的最高高度。3 49 3 3 13 3 3 00 0 0 010样例输出71...原创 2020-04-21 19:14:07 · 374 阅读 · 0 评论 -
c++的string相关操作
整理了一些C++中string类的相关操作函数及运算符。注意其中用到了c11的列表初始化,如果编译不通过则把初始化时的花括号替换为小括号即可。初始化void init(){ //创建string对象 string str1{"HelloWorld!"}; char ch[] = "helloworld!"; string str2{ch}; } 追加字符串v...原创 2019-08-25 23:55:36 · 300 阅读 · 0 评论