C/C++
很黑的黑
这个作者很懒,什么都没留下…
展开
-
c++11 map容器中怎么添加atomic类型的值
在项目中碰到一个问题,需使用一个atomic值做为map容器的值,但是用普通的方法会报类似下面的错误error C2248: : cannot access private member declared in class error: use of deleted function 有以下两种方法可以选择,我是使用的第一种看详细的可以看:https://stackoverflow.com/questions/35091396/stdatomic-as-a-value-of-stdm...原创 2022-06-30 14:37:24 · 1554 阅读 · 0 评论 -
ffmpeg 4.2.2 实现mp4转avi(修改官方remuxing例子)
最近想把ffmpeg官方例子过一遍,达到初步了解ffmpeg的目的,本文只是给自己一个记录,也是在网上没有找到一样的文章,发出来供大家指点。直接使用官方demo,把mp4转换成avi格式会报下面的错误(avi转MP4,MP4转其他都没问题)下面的代码,可以实现其他格式转avi,但是还是存在问题,转换完后的视频再想转回去就会丢失视频画面,只有音频了,刚开始以为是要放到av_rescale_q_rnd函数前面,测试是一样的结果,报错如下图,输出的dts和duration变了(去掉两个宏定义,就没这.原创 2021-11-23 10:40:26 · 1256 阅读 · 0 评论 -
g++在编译时就确定运行时动态库路径
完整的参数是-Wl,-rpath=路径(-Wl,-rpath,路径)注意l是小写,两个 - 不能少,逗号不能少报错1:g++: error: unrecognized command line option ‘-WL,-rpath=路径’ L大写导致的报错2:/usr/bin/ld: cannot find rpath=路径: No such file or directory rpath前没加 -(减号) 导致...原创 2021-09-18 11:21:56 · 1669 阅读 · 0 评论 -
terminate called after throwing an instance of ‘std::bad_weak_ptr
在使用shared_ptr时跑到报错terminate called after throwing an instance of 'std::bad_weak_ptr我的类名是这样的class CRtpInstance :public std::enable_shared_from_this<CRtpInstance>,记得使用enable_shared_from_this要用public继承,但这不是报错的原因是因为使用shared_from_this()时,this指针不..原创 2021-05-25 17:19:28 · 1980 阅读 · 0 评论 -
学习线程池,可变参数输入
最近在写项目时,用了一个别人的线程池,但是只能传固定参数,用起来很麻烦,但自己也懒得(不会)去替换了,利用空闲时间在网上找了一份可变参数线程池代码,我也不知道哪个博客是一手作者了,在下面贴作者的github地址,原作者的仓库中有read.me,大家可以看看原作者GitHub地址删除了window.h,a.afun()改成了A::afun()在linux下执行下列命令,可编译过g++ Main.cpp -std=c++11 -pthreadthreadpool.h#ifndef.转载 2021-04-21 16:17:41 · 198 阅读 · 0 评论 -
区间合并 [1,3] [2,6]
题目描述:给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。自己写的,不一定对,默认数据是排序的#include <原创 2021-03-09 20:24:37 · 271 阅读 · 0 评论 -
最优解求二进制中0或1的个数
呀呀呀,《剑指offer》中有做过求1的个数的,时间久了又只会用移位的方式求解了,这不是最优解一、求1的个数int countOneNum(int val){ int iCount = 0; while(val) { iCount++; val = val & (val - 1); } return iCount;}/* ----------------------------假设val等于11 1原创 2020-11-12 21:45:52 · 361 阅读 · 0 评论 -
面经5
1.__stdcall和__cdecl的区别哈哈,又又呆住了,没见过这两个关键字 网上查起,这两个是函数调用的一种约定,调用方和被调用方(函数提供方)需使用相同的约定,C语言默认__cdecl,c++则是__stdcall,函数入栈方式都是从右向左,两者的区别就是_stdcall的函数在返回时会自动清除堆栈中的参数;__cdecl的函数在返回时不会自动清除堆栈中的参数,清除工作由调用者完成。2.vector,list,map的底层机制这个大概意思知道,vector底层还是数组,内存不够时..原创 2020-11-10 16:43:24 · 116 阅读 · 0 评论 -
自以为基础知识了解了然后被吊锤的一场面试4
嗯呐嗯呐,如题,被问自闭了的一天,真的怀疑人生了一.C++ main函数前,程序启动后执行的操作我楞了,回答说系统进程唤起应用进程啥的(已经开始慌了阵脚),其实前面的博客就写过类似的,只不过问如何在main函数前打印XXXX。答:这段时间主要做一些初始化资源的工作,毕竟main函数只是程序的入口函数罢了1.要设置栈指针(函数也是指针调用的罢了)2.初始化全局和静态变量3.给未初始化的全局变量赋初始值4.全局对象初始化,调用构造函数(这就是我前面博客说的在main函数前打印XXXX)5.将a原创 2020-11-04 22:12:08 · 172 阅读 · 1 评论 -
关于const变量和普通变量相互赋值的问题
今天看到一道笔试题有以下表达式:int a = 248,b = 4;int const c = 21;const int *d = &a;int *const e = &b;int const *const f = &a;好久没有做const转换的题了,都记不清规则了,我的第一回答是const int *d = &a;是错误的,const修饰的是指针d所指向的变量,所以应该赋值constint类型,int const *const f = &a;...原创 2020-10-27 21:47:54 · 2196 阅读 · 0 评论 -
opencv xml文件存储double类型时显示科学计数法
opencv xml文件存储double类型时显示科学计数法例子:本来想存储0.70这个double值到xml文件中,结果实际存入的是6.9999998807907104e-01,这个值的可读性就很差了,如果想手动改xml文件中这个值也不太现实了。double dValue = value;测试结果: value为60时,显示60.(注意后面的.) va...原创 2019-11-15 16:53:58 · 947 阅读 · 1 评论 -
用c++ boost库实现定时循环跑一个函数
在工作中遇到一个问题,本来准备弄个定时器,隔一段时间就去跑一个函数,刷新数据的,最后还是把任务交给了前端,但是在网上查询了资料,可以想下面这么写,就可以一直跑了,先做个总结,以后还是会用到的。#include<boost/asio.hpp>#include<boost/date_time/posix_time/posix_time.hpp>#include<...原创 2019-11-01 14:46:35 · 2135 阅读 · 0 评论 -
从1到n整数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12, 1一共出现了5次。最简单的思路,遍历1~n个数,判断每个数有几个1,再累加。原创 2017-10-07 21:18:15 · 521 阅读 · 0 评论 -
使一段代码第一次执行和以后执行结果不同
在学习《C专家编程》时,遇到了这段代码非常的有意思。void generate_initializer(char * string){ static char separator = ' '; printf(" %c %s \n",separator,string); separator = ',';}在第一次执行时,函数首先打印一个空格,然后打印一个初始化字符串。所有后续的初...原创 2018-09-27 15:03:40 · 539 阅读 · 0 评论 -
C语言字符映射
今天在写俄罗斯一个客户的需求时,遇到了一个问题。 软键盘的表示是用U8类型来表示的,但是俄罗斯的字母是ASCII码1000以后的了,U8是无法表示的,但是我要把这个改为U16表示的话,牵一发而动全身,要改的地方太多,无法保证错误,问了师傅说加字符映射是最稳妥的方法,因为最后还是要转换成U16来显示的,所以我就在转换前加一个判定条件,来决定是否继续转换还是字符映射。LS_U16 ...原创 2018-10-27 08:56:57 · 3032 阅读 · 0 评论 -
函数后有2个括号
今天遇到一个很奇怪的函数使用方法 fun(参数)()有没有很奇怪这是怎么调用的,我也很好奇啊,可是在网上搜不到相关的知识,于是请教了大佬,大佬举的例子是a++--,请分析下这是怎么运行的,这个容易理解,先a++(值不会先增加),再执行—操作。所以这个函数也...原创 2018-11-07 17:11:41 · 6608 阅读 · 1 评论 -
字符串常量加减整数
"abc" + 1这个表达式是什么意思呢?我的第一反应是WTF,字符串常量还能加减吗?但是细思下发现字符串常量实际上是个指针,指针指向的是字符串常量的第一个字符,所以+1完全是可以的,这时指向的是字符串常量的第2个值,当然加减整数都不能超过字符串的长度,"abc" + 4是错误的。#include<stdio.h>int main(void){ printf("%...原创 2018-11-07 21:33:20 · 1625 阅读 · 0 评论 -
函数指针的初始化及调用
以前只知道函数指针怎么使用,但是细节就不太了解,这里总结下和其他指针一样,函数指针执行间接访问之前必须把它初始化为指向某个函数。函数名被使用时总是由编译器把它转换为函数指针。#include<stdio.h>int fun(int a){ printf("Happy %dth birthday\n",a); return a;}int main(void...原创 2018-11-05 19:52:26 · 7564 阅读 · 0 评论 -
java静态初始化代码块中的变量,为什么可以不需要声明数据类型
今天在学java时看到这段代码public class StaticBlockTest{ static{ a = 6; } static int a = 9; public static void main(String[] args) { System.out.println("a的值:" + StaticBlockTest.a); }} 就有点诧...原创 2018-11-26 14:43:48 · 2477 阅读 · 0 评论 -
两个long long相除为0
今天做《C++ Primer PLUS》第三章的编程练习时,遇到下面一个问题://prople.cpp -- USA population / world's population#include<iostream>using namespace std;int main(){ long long totalPopulation; long long usPopul...原创 2019-04-17 21:20:20 · 3769 阅读 · 1 评论 -
标准输入cin的返回值以及while(cin>>x)的问题
最近在看C++,学到了标准库这一章,看到cin的时候,我们经常看到很多的代码中会有这么一段while(cin>>x){ ......}。这里我们最关注的问题是while括号里面cin>>x他每次输入的时候返回的是什么值呢。所以我们也就会问cin的返回值是什么。我也看到很多像我这样的新手问这样的问题,下面说下我个人的见解,如有不当之处,还请指正! 其实我倒觉得我们...转载 2019-04-24 12:10:47 · 1673 阅读 · 0 评论 -
C++11新增特性
这是C++ Primer Plus第18章部分内容,做个总结C++11新增的部分标准:1.新类型 long long,unsigned long以支持64位或者更宽的整型;新增char16_t和char32_t以支持16位和32位的字符表示2.统一的初始化,扩大了用大括号括起的初始化列表的适用范围,使其可用于所有的内置内型和用户定义的类型,使用初始化列 表时,可添加等号...原创 2019-08-22 14:10:02 · 171 阅读 · 0 评论 -
定义了的变量但是没有使用和未定义的变量的相关知识
今天在思考我定义并初始化了的变量在程序中未使用到,在编译的时候编译器是怎么对待这些值的。在寻找答案时又引发了如果我变量未初始化会怎么样?然后就写程序测试了下。#include<stdio.h>int iGloblVal ;int main(void){int iPartVal;printf("iGloblVal = %d\n",iGloblVal);prin...原创 2018-09-21 15:17:08 · 6122 阅读 · 0 评论 -
结构体数组作为函数参数
把结构体数组名作为函数的一个参数,然后在这个函数的函数里面继续作为参数,把一个值赋给这个结构体数组的一个变量,我再赋值的地方是有值的,在函数里面也是有值的,但是出了这个函数回到主函数时,这个结构体数组的变量的值就为空了。为什么呢?因为我在使用这个函数是这样的,iReturn = ParseAllEitSection(&stTransportParameter,pfTsFile,iTsP...原创 2018-09-21 08:29:27 · 9919 阅读 · 0 评论 -
只允许输入正整数
在解析TS流文件时,我要实现输入节目号就能显示节目相关信息,但是我刚开始没有判断输入的节目号是不是正整数,我不小心按了其他键就一样会被识别,但是没有信息,这可不行,万一用户按错了键,但还是跳转到了节目信息节目,显示空白,用户可就生气。 我的实现方法是先定义个数组,然后逐位比较是不是0~9的数字,这可通过isdigit()函数来实现,全部判断完再通过atoi()函数转换一下...原创 2018-09-19 11:04:39 · 1613 阅读 · 0 评论 -
设法将vector对象中的所以词都改写成大写形式
今天在学C++容器中的vector,书后面有个练习题:从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写成大写的形式。输出改变后的结果,每个词占一行。然后我的第一想法是这样的:原创 2017-11-29 16:10:20 · 383 阅读 · 0 评论 -
转义字符
有一个字符串”\\\”A100\”\\”,用strlen计算的结果是多少? A、6 B、7 C、8 D、9那再来做个题目,测试下你真的懂转义字符没下列转义字符中错误的是 A.′\000′ B.′\14′ C.′\x111′ D.′\2′ 下面是我的结论(不一定正确,可参考)8进制的处理是获取斜杠\后面的3位整数,其他的原样输出。16进制的处理是截取斜杠\x后的整数的最后2位最处理,前面的位数不管(这叫截断)。原创 2017-10-26 19:22:13 · 8186 阅读 · 1 评论 -
C++模板库中std::list(双向链表)兼约瑟夫环问题
C++模板库中std::list(双向链表)兼约瑟夫环问题原创 2017-10-22 17:14:04 · 1279 阅读 · 0 评论 -
用宏来选择不同的代码段
用宏来选择不同的代码段,也就是所谓的条件编译1、第一种形式#ifdef 标识符程序段1#else程序段2#endif如果标识符已被#define语句定义过,则编译程序段1,否则编译程序段2。2、第二种形式#ifndef 标识符程序段1#else程序段2#endif如果标识符未被#define语句定义过,则编译程序段1,否则编译程序段2。与第一种形式刚好相反。3、第三种形式#if 常量表达式程序段1#else程序段2#endif如果常量表达式的值为真(原创 2017-11-06 20:19:28 · 881 阅读 · 0 评论 -
二维数组和二维指针的关系
今天在看一个关于链表的题时,看到一个 void RemoveNode(ListNode **pHead,int value) { if(pHead==NULL || *pHead=原创 2017-09-21 20:04:30 · 363 阅读 · 0 评论 -
八皇后问题用C语言解决
在8X8的国际象棋上摆放8个皇后,使其不能相会攻击,即任意两个格子不得处在同一行、同一列或者同一对角线上,请问总共有多少种符合条件的摆法?原创 2017-10-07 16:15:36 · 1036 阅读 · 0 评论 -
三种错误处理的方法
今天看《剑指offer》(88页底)的时候,看到了三种错误处理的方式,有一点点困惑,大概的总结一下。 一:采用返回值的方法原创 2017-10-03 15:57:18 · 1159 阅读 · 0 评论 -
同一函数多次定义同名静态变量问题
今天在做深圳茁壮网络公司的笔试题时遇到一个令我非常困惑的问题,在网上找了好久没有找到满意的答案,所以只好自己总结下,如果写得有错误,希望大家指出了,毕竟是新手,写得不好勿怪。 为什么可以在同一个函数内定义多次静态同名变量呢?这很违反我之前的认知,以为变量名就相当于我分配的这块地址的入口一样,定义3个同名变量不会搞出大事吗?编译器还不报错,无语.....我加了很多的printf来测试,发...原创 2017-09-16 15:17:05 · 10996 阅读 · 5 评论 -
三维数组的地址计算问题
假设以行优先顺序存储三维数组A[5][4][3],其中元素A[0][0][0]的地址为0,且每个元素占2个存储单元,则printf("%d\n",A[4][3]+2)输出什么好吧,我在笔试的时候居然写了个160,我以为是A[4][3]已经到了5*4*2的地方,也就是40,然后再加5*4*2,就又是一个40,再乘以2就是到了160的地方(完全错误的想法,脑子太糊涂了,难怪面试总过不了)原创 2017-09-23 18:09:42 · 27689 阅读 · 1 评论 -
C++之返回数组指针
因为数组不能被拷贝,所以函数不能返回数组。不过函数可以返回数组的指针或者引用,今天我们一起来学习下C++下的几种返回数组指针的方法一、类型别名这是返回数组指针最直接的一种方法了#include<iostream>using namespace std;typedef int arrT[10];//类型别名,表示含有10个整形的数组//using arrT ...原创 2017-12-11 16:23:34 · 5595 阅读 · 3 评论 -
C++之范围for语句
今天看《C++ prime》的时候看到for(auto c:str)这个语句时一脸懵逼,什么时候for循环语句变这样了(请原谅我的无知),翻了下书的前面部分,才发现我居然把range for这一页给遗漏了,罪过罪过,看书如此不认真。 范围for(range for)语句:遍历给定序列中的每个元素并对序列中的每个值执行某种操作。 for(declaration:ex原创 2017-12-04 16:48:15 · 490 阅读 · 0 评论 -
expected unqualified-id before ‘decltype’错误解析
今天在做读入一组整数并把它们存入一个vector对象,要求先输出第一个和最后一个元素的和,接着输出第二个和倒数第二个元素的和,以此类推。下面是我的程序: #include<iostream>#include<vector>using namespace std;int main(void){ vector<int> ivec; in...原创 2018-09-03 16:35:02 · 5433 阅读 · 0 评论 -
for循环运行原理疑问
我们在学习C语言的时候一定少不了使用for循环,大家对此都很熟悉吧,我原先以为自己对for循环的使用了如指掌,那还不是小菜一碟,结果在看《C语言深度剖析》一书时遇到一个课后问题就把我难住了。int main(void){ int i = 0; for(i = 0,printf("first = %d\n",i); i < 10,printf("second ...原创 2018-08-17 09:01:07 · 2044 阅读 · 0 评论 -
编译出现lvalue required as increment operand的错误
编译出现lvalue required as increment operand的错误出现这些错误可能是:1. char a[10] = {“hello”};a++; 这里就会报错,因为a是char[]类型的,它表示的是这个数组的首地址和第一个元素的地址,不能直接去操作a++去移动地址,如果想移动可以char *p = a;然后再操作p,p++这样是完全正确的。 ...原创 2018-08-16 10:01:48 · 47320 阅读 · 8 评论 -
无符号整数与有符号整数相加问题
#include<stdio.h>#include<string.h>int main(void){ unsigned j = 10; int i = -20; printf("%ud\n",i + j); (i + j > 10000) ? (printf(">10000")) : (printf("<...原创 2018-08-10 14:45:33 · 6657 阅读 · 1 评论