自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 动态数组的sizeof失效?无法使用memset(a, 0, sizoef(a)) ?

首先需要明白sizeof是在编译时由编译器进行推导大小,如果我们对Dynamic Array即动态数组使用sizeof,编译器在编译时对其推导,推出为指针大小(depends on pointer size)4 bytes / 8 bytes。

2022-12-19 13:42:10 372 1

原创 C++类型转换cast

**dynamic_cast用于转换继承指针/引用****static_cast用于普通类型转换****reinterpret_cast用于低级别的位转换,使用时小心,注意类型大小的差异****const_cast用于常数/volatile转换**

2022-09-02 12:47:00 313

原创 C++ gcc编译器加速优化

C++ gcc编译器加速优化。

2022-08-09 21:24:58 673

原创 memset函数初始化数组

memset函数的声明和含义如下:函数解释:将s所指向的某一块内存中的前n个字节的内容全部设置为 ch 指定的 ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。该函数对int数组而言只能用于int数组的置0或-1,其他值无效。其作用是在一段内存块中填充某个给定的值,它是对较大的结构体或者数组进行清零操作的一种最快方法。函数声明如下:因此如果我们想将数组置为我们要的十进制值,只能置为0或-1,因为0的二进制表示全为0,-1

2022-07-05 20:58:00 853

原创 cin加速

在c++中之所以cin,cout效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来消除iostream的输入和输出缓存,可节省时间,使效率与scanf与printf相差无几,还有应注意的是scanf与printf使用的头文件应是stdio.h而不是 iostream,使用语句关闭这一操作时应注意cin和cout不要与scanf和printf混用以免出现问题。在默认的情况下cin绑定的是cout,每次执行 .........

2022-06-16 00:10:28 835

原创 C++ watch变量指定进制

举个栗子,我们在debug时想看一个变量,以特定的进制输出我们只需在watch变量名字后面加上", 进制缩写(bodh)"二进制variable,b十六进制variable,h

2022-04-24 22:02:49 860

原创 C++多维vector为什么比多维数组慢

笔者最近在做LC时,发现用多维vector比用多维数组在运行时间和运行空间上都大了许多,举个栗子double dp[101][25][25] ={0.0};vector<vector<vector<double>>> dp_v(101, vector<vector<double>>(25, vector<double>(25, 0.0)));两者运行时间相差百余ms通过阅读资料调研发现慢的原因是数据在内存上存储的方式不同(.

2022-04-22 23:29:42 2065 1

原创 C++ vector中所有元素快速置零

vector元素置零方法有很多种,其中比较快的是std::fillconst int n = 10000;vector<int> v(n, 0);/*modify vector...*///here we want to set all value in the vector to zerostd::fill(v.begin(), v.end(), 0);当然还可以使用iterator迭代置零,或者assign置零const int n = 10000;vector&

2022-04-22 22:23:55 17016

原创 C++右值引用(right value reference)实战运用

C++11之前,我们所说的引用只有左值引用(auto &a),现在我们通常使用的引用也是左值引用,但是准确一点说,C++11之后,除了左值引用(LVaule),还有右值引用(RValue)。一句话概况LVaule和RValueauto a = 10;//其中 a就是左值, 10就是右值auto b = a;//其中 b是左值,a 是右值C++11后,L-value(左值):指可寻址的,L表示location,A value that has an address.R-value

2022-04-16 21:39:38 702

原创 C++ priority_queue使用Lambda表达式重写compartor

在之前的blog中介绍过STL库中set、map、priority_queue三种排序方式,那么相信读者会经常用到特殊的type,这时,我们需要重写compartor,举个栗子以Pair中第二个元素构建大根堆 auto cmp = [](const pair<int, int> &a, const pair<int, int> & b) { return a.second < b.second;//less }; priority_queue<

2022-03-29 22:17:48 1182

原创 visual studio比较文件差异(diff操作)

相信经常在linux上使用git diff的同学,在第一次使用visual studio比较两文件时比较困惑,vs有没有相同的功能?答案当然是有的!一、依次点击菜单【视图】>>【其它窗口】>>【命令窗口】,如下图所示,启动命令窗口:二、在terminal中使用Tools.DiffFilesTools.DiffFiles a.cpp b.cpp输入a文件和b文件路径即可Tips:可以在terminal中输入不同的选项来调整文件差异如:Diff.SideBySid

2022-03-27 21:53:10 11680

原创 STL set、map、priority_queue默认排序

setset<T> s;//默认升序,相当于 set<int,less<T>>。set<T, less<T>> s; //该容器是按升序方式排列元素。set<T, greater<T>> s; //该容器是按降序方式排列元素。mapmap<T1, T2> m;//默认按键的升序方式排列元素,相当于 map<T1, T2, less<T1>> mmap<T1, T2,

2021-11-25 15:50:25 766

原创 编写宏(macro)时遇到的小错误

例如笔者写了一个如下的copy宏#define IOV_COPY (a, b) \ (a).base = (b).base; \ (a).len = (b).len如果使用上面的栗子,会发现会出现‘a’ was not declared in this scope‘b’ was not declared in this scope这时我们应当对上面的macro进行修改#define IOV_COPY(a, b) \ (a).base

2021-07-06 21:09:11 734

原创 snprintf和sprintf

笔者初识snprintf时,以为其跟printf有异曲同工之处,阅读了手册后,才发现不以为然;遂记录下来:int snprintf ( char * s, size_t n, const char * format, ... );Write formatted output to sized bufferComposes a string with the same text that would be printed if format was used on printf, but instea

2021-07-01 17:32:30 407 1

原创 执行shell脚本出现 $‘\r‘: command not found

这类问题经常出现在使用不同系统或机器编写、修改脚本时,换行符不一致导致该问题出现解决方案:Remove trailing \r character that causes this error:sed -i 's/\r$//' filenameExplanation:Option -i is for in-place editing, we delete the trailing \r directly in the input file. Thus be careful to type the

2021-06-25 11:30:47 141

原创 Tuning multi-threaded applications

The optimization guideline covers five specific areas (arranged in order of importance):■Thread synchronization■Bus optimization■Memory optimization■Front-end optimization■Execution-resource optimizationKey practices of thread synchronizationKey pra

2021-06-21 19:39:03 64

原创 Hyper threading and Pipeline

To understand what HT is, you need to understand the pipeline. The pipeline is a system in the CPU that breaks down each operation into smaller chunks and executes each of these chunks separately. Think of it like doing your laundry: you can wash your clot

2021-06-17 21:00:34 97

原创 虚函数(virtual function)

Virtual Function—Late binding(Runtime)Non-virtual Function—Early binding(Compile time)Runtime polymorphism is achieved only through a pointer(or reference) of base class type.Name Convention, in C++, an underscore usually indicates a private member vari

2021-06-15 20:57:08 126

原创 vim被锁住,按什么键都不起作用,怎么办?

相信大家肯定有过这样的经历,写文档总喜欢写一点儿就"ctrl+s"或者"command+s"如果在使用vim时,不小心“保存”瘾犯了,向终端输入"ctrl+s"或者"command+s",这时vim如同被锁住一般,这时因为此时vim停止向终端输出解决方案:"ctrl+q"或者"command+q"...

2021-06-15 20:47:29 1857

原创 Linux中常用语句语法

不定期更新:$–>#sudo sh -c "su root"Shell中if判断-ne 不等于-eq 等于-gt 大于-lt 小于-ge 大于等于-le 小于等于if-fi 闭合,共同构成if语句Linux 通则匹配bw=[[:alnum:][:punct:]]\{6\}alnum 数字字母punct 符号{n} 最多n次Shell脚本 三行变一行sed 'N;N;s/\n/ /g' test.txt# n行变1行,这里就n-1个N或者cat te

2021-06-15 20:41:31 306 1

原创 undefined reference to ‘io_xxx‘

我们在使用libaio库的时候,在编译时可能会报如下错:undefined reference to ‘io_getevents’undefined reference to ‘io_setup’undefined reference to ‘io_submit’这时,只需要在编译中要加 '-laio’参数即可同样的还有thread,如报如下错:undefined reference to ‘pthread_create’undefined reference to ‘pthread_join

2021-06-15 16:09:14 967 2

原创 scp拷贝文件或文件夹

拷贝文件命令:scp file username@ip:filepath@param:file:拷贝的文件名username:远端用户名ip:远端服务器ipfilepath:远端文件路径拷贝文件夹命令:scp -r file username@ip:filepath加一个"-r" recursive 即可

2021-06-09 11:40:42 688

原创 更改Linux所有子目录或子文件所有者权限

有时候我们在创建文件或文件夹时使用sudo进行创建,那么再下次访问修改时,仍需使用sudo来进行update、delete,非常不方便,这时我们可以通过对子目录下所有文件进行权限更改使用chmod修改权限对temp/目录下的所有子文件与子目录执行相同的权限变更:chmod -R 700 temp/-R参数是递归(recursive) 处理目录下的所有文件以及子文件夹700是变更后的权限表示(只有所有者有读和写以及执行的权限)777是可读可写可执行temp/ 是需要执行的目录chown

2021-05-31 15:01:06 2639

原创 Linux查询文件/文件夹大小

home、usr目录空间所剩不多时,需要删除一些旧文件来释放空间;有时可能会面对想要删除的文件,无从下手,这时我们可以对文件/文件夹大小进行查询,定位陈旧的大文件Linux下查询哪个文件夹/文件占据较大磁盘空间。cd到想要查询的目录下,然后执行如下语句sudo du -sh *...

2021-05-31 14:24:00 123

原创 使用CMakeList编译报错

可能出现的一个原因是磁盘空间不足,使用df -h查看磁盘空间,若磁盘空间已满,清理磁盘,然后再进行编译

2021-05-17 14:34:00 303

原创 编译.h文件时报错“error: backslash-newline at end of file [-Werror]:

解决办法:在文件末尾加一行空行 例如在编译如下.h文件时,报错#define func1(name, begin) \ static thread_local A __x_y_z_agg_##name(#name); \ (__x_y_z_agg_##name).B(begin) #define func2 A::C...

2021-04-30 14:30:26 972

转载 linux exit()和_exit()

在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区, 在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中取出,每次写文件时也仅仅是写入到内存的缓冲区,等待满足一定的条件(达到一定的数量,或者遇到特定字符,如换行和文件结束符E...

2021-04-25 11:51:58 251

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除