
C/C++
苦逼工科男
软件开发工程师
展开
-
C++ Trick:小心,子类隐藏父类成员函数
C++子类隐藏父类成员函数原创 2022-09-28 14:01:11 · 1057 阅读 · 13 评论 -
两个栈模拟实现队列
两个栈模拟实现队列原创 2022-09-13 19:31:04 · 1872 阅读 · 0 评论 -
典型故障1----变参格式化导致的重启
典型故障1----变参格式化导致的重启原创 2022-08-19 09:49:07 · 212 阅读 · 0 评论 -
多线程下定义全局变量的方法
全局变量的定义原创 2022-08-11 23:44:41 · 975 阅读 · 0 评论 -
Google中国编程挑战赛入围赛真题HardDuplicateRemover(1000分)
#include <iostream>#include <vector>#include <map>using namespace std;class HardDuplicateRemover{public: vector<int> process(vector<int>& elements);};vector<int> HardDuplicateRemover::process(vector<.原创 2022-04-17 23:50:30 · 494 阅读 · 0 评论 -
C++中inet_pton、inet_ntop函数
参考:C++中inet_pton、inet_ntop函数_Promising丶的博客-优快云博客_c++ inet_ntop‘inet_pton’ was not declared in this scope_无名_四叶草的博客-优快云博客linux下使用g++编译cpp工程 - BattleScars - 博客园linux编译, 代码:#include <stdio.h>#include <stdlib.h>#include <strin..原创 2022-04-06 18:41:59 · 2909 阅读 · 0 评论 -
使用自定义结构体当map的key
1.只有重载<的类或者结构才能作为map的key值。string可以作为key值是因为string重载了<2.如果不重载<会提示如下错误:error C2676: 二进制“<”: “const C”不定义该运算符或到预定义运算符可接收的类型的转换3.重载<但是没有实现会提示如下错误:Expression: invalid operator<比如bool operator < (const C &c) const{return true;}原创 2022-03-29 17:11:11 · 1561 阅读 · 0 评论 -
数组类型的参数做函数入参,会退化为指针
数组类型的参数做函数入参,会退化为指针。函数内,再通过sizeof求大小,就是指针的大小了。32位系统,指针大小4;64位系统,指针大小8;解决方法:可以通过引用的方式,传入入参,这样可以防止入参退化为指针。#include <iostream>using namespace std;typedef unsigned char BYTE;typedef BYTE STRINGLIST[20]; //// 定义 STRINGLIST 新的变量类型,或者说是给 B..原创 2022-02-09 22:07:05 · 840 阅读 · 0 评论 -
C++ vector compile time error: expected identifier before numeric constant
vector - C++ compile time error: expected identifier before numeric constant - Stack Overflowexpected identifier before numeric constant错误_DXT的博客-优快云博客You cannot do this:vector<string> name(5); //error in these 2 linesvector<int> v..原创 2022-01-29 15:36:18 · 1532 阅读 · 0 评论 -
零矩阵,若M × N矩阵中某个元素为0,则将其所在的行与列清零
零矩阵编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例 1:输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入:[ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出:[ [0,0,0,0], [0,4,5,0], [0,3,1,0]]相关标签 数组 哈希表 矩阵我...原创 2022-01-17 00:07:24 · 1235 阅读 · 0 评论 -
旋转矩阵90 度
旋转矩阵给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3,...原创 2022-01-16 22:30:31 · 3927 阅读 · 0 评论 -
C++11 静态断言(static_assert)
C++11 静态断言(static_assert) - Avatarx - 博客园C代码中自定义static assert实现机制_cenzmin的专栏-优快云博客static_assert(ENV_NOVA== 47, "forbidden modify value of ENV_NOVA");static_assert(sizeof(Student) < (JOB_DATA_ZONE_SIZE), "Studentstruct length is too large!...原创 2021-12-03 10:29:12 · 682 阅读 · 3 评论 -
对数组名取地址 a[ ],&a
C语言规定,数组名代表数组的首地址,也就是第0号元素的地址。所以a==&a[0]但对数组名取地址时却要注意了,在理解“对数组名取地址”这一表达式的含义时一定要记住:数组名是“数组”这种变量的变量名这样,&a就好理解了,它取的是“数组”这种变量的地址&a+1自然也就要跨过整个数组,所有元素长度总和,这么长的一个长度。例如:int a[10],那么&a+1就要跨过10个int的长度reference:对数组名取地址 a[ ],&a - No S..原创 2021-11-29 11:45:32 · 2784 阅读 · 0 评论 -
C++之共有继承、保护继承、私有继承
C++之共有继承、保护继承、私有继承 - 唯一诺 - 博客园定义如下类,会引起编译器报错的是() class Base { public: int base_public; protected: int base_protect; private: int base_private; }; class Derive :private Base { public: using Base::base_public; ..原创 2021-11-29 11:35:38 · 476 阅读 · 0 评论 -
取余数,可以用%,也可以按位与
对64取余数:typedef unsigned int WORD32;void main(){ WORD32 group = 10; printf("----- %d\n", group & 0x3f); group = 64; printf("----- %d\n", group & 0x3f); group = 63; printf("----- %d\n", group & 0x3f); group = 65; printf("--..原创 2021-10-21 21:16:11 · 463 阅读 · 19 评论 -
OFFSETOF
#ifndef OFFSETOF #define OFFSETOF(Type, member) ((unsigned long)&(((Type *)nullptr)->member))#endif#ifndef OFFSETOF #define OFFSETOF(s,m) (WORD16)((size_t)&(((s *)1)->m) - (size_t)((s *)1))#endif原创 2021-09-09 20:43:20 · 216 阅读 · 4 评论 -
sscanf
https://baike.baidu.com/item/sscanf/10551550?fr=aladdin巧用sscanf格式化,可以将字符串转换成数字void main(){ int result = 0; char license_str[20] = "HAHA_AA_2233"; sscanf(license_str, "HAHA_AA_%u", &result); printf("----- %d\n", result); ...原创 2021-09-09 13:27:55 · 233 阅读 · 0 评论 -
变量溢出 - 探究
void main(){ signed char x = 0x7f; printf("%d\n", ++x); unsigned char y = 0xff; printf("%d\n", ++y); system("pause");}运行结果:-1280请按任意键继续. . .原创 2021-09-07 14:59:14 · 623 阅读 · 0 评论 -
C++ 函数调用返回左值引用
reference:https://blog.youkuaiyun.com/abnerwang2014/article/details/26720455被调函数的返回类型决定返回的是左值还是右值,当被调函数的返回类型是引用时,返回的是左值,其余情况下返回的是右值,被调函数返回的左值有着与其他左值类型同样的运算特性,需要特别指出的是,我们能为返回类型是非常量引用的函数的结果赋值,但是需要注意的是,进行运算的前提是确保返回的引用是有效的,返回与局部对象绑定的引用是无效的,因为被调函数运行结束时,局...原创 2020-11-20 14:28:08 · 1235 阅读 · 18 评论 -
#undef的用法
#undef的用法https://blog.youkuaiyun.com/sweetfather/article/details/79655253#define TEST_A 1 #define TEST_CLASS_A clase T1 #include "TEST.h" #undef TEST_A #undef TEST_CLASS_A 在这一个文件中使用宏定义: #define TEST_A 1 #define TEST_CLAS...原创 2020-10-20 14:23:02 · 184 阅读 · 1 评论 -
c++11 std::atomic
reference:c++11 std::atomichttps://www.jianshu.com/p/b7a2b36f43d9使用原子的变量,++ 和 -- 的次数相同,最终为0;没有使用原则的变量,++ 和 -- 的次数不相同,最终不为0;c++新特性之std::atomichttps://blog.youkuaiyun.com/delongwang520/article/details/79604329...原创 2020-10-20 09:24:18 · 536 阅读 · 0 评论 -
C++代码性能提升
《C++应用程序性能优化::第二章C++语言特性的性能分析》学习和理解https://www.cnblogs.com/cswuyg/archive/2010/08/22/1805840.html原创 2020-10-10 14:10:22 · 197 阅读 · 2 评论 -
Source Insight 4.0 配置及工程指南
referencehttps://zhuanlan.zhihu.com/p/77499931原创 2020-06-03 14:23:11 · 430 阅读 · 0 评论 -
C++ 仿函数
reference:C++仿函数和typename的用法https://www.bbsmax.com/A/LPdoMA3EJ3/原创 2020-05-10 23:31:17 · 174 阅读 · 1 评论 -
数组作为函数参数
https://www.cnblogs.com/lvfengkun/p/10347339.html原创 2020-04-17 11:13:29 · 162 阅读 · 0 评论 -
码流处理:BYTE与WORD间的转换。
码流处理:BYTE与WORD间的转换。#include <stdio.h>#include <stdlib.h>#include <string.h>typedef unsigned char BYTE;typedef unsigned short WORD;int main(){ BYTE in[2] = {0xFE, 0xDF}...原创 2020-03-28 14:41:42 · 1709 阅读 · 0 评论 -
函数模板支持的参数类型转换
函数模板和类模板的参数T不能通用任意的数据类型A 它们的实参是用来实例化类类型参数(typename )的,因此实参必须为有已确定内存空间大小的数据类型(指针、用户自定义类···);也不能为抽象类,可为具体类(抽象类的限制);所以它们的参数不能是任意的数据类型。...原创 2020-01-30 13:22:19 · 1377 阅读 · 0 评论 -
C语言字符串分割 与 合并
空格分割输入: char a[20], b[20], c[20], d[100]; const char *p = "hello : 20191227"; sscanf(p, "%s %s %s", a, b, c); printf("--%s\n--%s\n--%s\n", a, b, c); printf("%s\n",p); sprintf(d, "%s %s %s...原创 2019-12-27 09:54:02 · 1227 阅读 · 0 评论 -
菱形继承和虚继承
reference:https://blog.youkuaiyun.com/qq_38145331/article/details/102585791https://my.oschina.net/u/2461850/blog/1603690https://blog.youkuaiyun.com/qq_41431406/article/details/84933450https://blo...原创 2019-11-25 23:08:58 · 414 阅读 · 0 评论 -
一些多线程数据竞争(data race)的现象
结构体位域并发问题https://blog.youkuaiyun.com/cccmercy/article/details/94059367原创 2019-11-20 09:26:13 · 1542 阅读 · 0 评论 -
【VS工具】开发人员命令提示 - 打印类的层次
打印派生类Son的层次:reference:vs2015开发人员命令提示工具 查看C++类对象模型https://blog.youkuaiyun.com/qq_29542611/article/details/79504396原创 2019-11-19 23:22:15 · 426 阅读 · 2 评论 -
单例模式实例化的时机
static在单例中的应用所谓单例就是一个类只能被实例化一次,主要有两种实现方法:在类使用之前,就将类实例化,也叫饿汉模式。利用静态对象 使用到类时,才进行实例化,也叫懒汉模式。利用静态对象指针reference:https://blog.youkuaiyun.com/shaochuang1/article/details/96181430...原创 2019-11-15 15:21:04 · 436 阅读 · 0 评论 -
C语言编程规范
【规则2-1-6】不允许在头文件中定义变量。说明:在头文件中定义的变量,在该头文件被多个源文件包含后,相当于在不同源文件中分别被定义。如果该变量是全局变量,最终编译器在链接时会因为出现重复的符号而出错。【建议2-1-1】头文件应该自包含(self-contained)。说明:所有头文件要能够自给自足。换言之,用户和重构工具不需要为特别场合而包含额外的头文件。【建议2-...原创 2019-11-13 20:49:49 · 1140 阅读 · 0 评论 -
C++流插入(输出)和流提取(输入)运算符的重载
感谢原作者,解释的非常透彻reference:https://blog.youkuaiyun.com/qq_31417941/article/details/84800291原创 2019-11-11 23:26:55 · 607 阅读 · 0 评论 -
C++智能指针
//智能指针//用来托管自定义类型的对象,让对象进行自动的释放//自定义一个指针管理类 - 智能指针class smartPointer{public: smartPointer(Person * person) { this->person = person; } ~smartPointer() { cout << "智能指针析构了" &...原创 2019-11-10 20:46:26 · 161 阅读 · 0 评论 -
c语言中的break用法
关于c语言中的break用法举报|2011-11-30 10:13void MakeShortName(uint8 *str){ uint8 i = 0; uint8 ext[3]; memcpy(ext, &str[8], 3); for (; i {转载 2014-04-04 09:47:10 · 3104 阅读 · 0 评论 -
std::cerr是ISO C++标准错误输出流
概念编辑std::cerr是ISO C++标准错误输出流,对应于ISO C标准库的stderr。与std::cout不同,ISO C++要求当cerr被初始化后,cerr.flags() & unitbuf非零(保证流在每次输出操作后被刷新),且cerr.tie()返回&cout。[1] 即cerr默认和cout同步但无缓冲。2cerr与cout的区别编辑c转载 2014-10-31 14:14:18 · 2840 阅读 · 0 评论 -
fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory
1>c:\users\oliver\desktop\c project\test 1\test.c\test.c\main.cpp(1) : fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory原创 2014-10-31 12:41:55 · 6228 阅读 · 0 评论 -
ifstream 没有 ios::nocreate 属性
今天在 vs2008 中运行一个小程序的时候,发现了一个小问题,ifstream 的 open 函数中不能用 ios::nocreate 属性。详细见代码:#include #include #include int main(){ using namespace std; ifstream inFile; inFile.open("my.dat",ios::in | i原创 2014-10-31 15:15:48 · 2532 阅读 · 0 评论 -
error C3872: "0xa0": 此字符不允许在标识符中使用
error C3872: '0xa0': this character is not allowed in an identifier或者 error C3872: "0xa0": 此字符不允许在标识符中使用 这是因为直接复制代码的问题。0xa0是十六进制数,换成十进制就是160,表示汉字的开始。解决办法:在报错的代码行检查两边的空格,用英文输原创 2014-11-04 15:54:09 · 4619 阅读 · 0 评论