C++
文章平均质量分 84
鸡啄米的时光机
热爱探索,自制力,人工智能技术
展开
-
ubuntu下面实现将Cmake由3.5.2版本升级到3.9.2
由于近期项目需求,需要对cmake进行升级,故记录下cmake由3.5.2版本升级到3.9.2的过程。第一步:查看自己系统cmake的当前版本1.1 执行 sudo -s切换到root权限用户下1.2 执行cmake --version第二步:下载3.9.2版本的cmake源代码2.1 执行wget https://cmake.org/files/v3.9/cmake-3.9...原创 2019-08-27 23:16:20 · 682 阅读 · 1 评论 -
2019年英特尔校园招聘软件研发笔试题目回忆
1 手写编程题目:要求实现一个函数,将一个字符串中的所有字母转化为小写,其余的不变。给定的函数是 char * lower( char * str)AC代码(通过vs验证):#include<stdio.h>#include<iostream>#include<string>using namespace std;char *lower(ch...原创 2018-09-11 13:08:13 · 2227 阅读 · 2 评论 -
空类/结构体占多少内存?
sizeof(空类/空结构体) = 1; 空类,没有任何成员变量或函数,即没有存储任何内容;但是由于空类仍然可以实例化,例如:<span style="color:#000000"><code>ClassA <span style="color:#006666">A</span><span style="color:#88原创 2018-09-07 22:10:45 · 1602 阅读 · 0 评论 -
c++中的联合体Union
union介绍 共用体,也叫联合体,在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的。union变量所占用的内存长度等于最长的成员的内存长度。 union与struct比较先看一个关于struct的例子:struct student{ char ...转载 2018-09-07 21:36:50 · 672 阅读 · 0 评论 -
内存大小端模式
1. 什么是大端,什么是小端:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。2.为什么会有大小端:为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的cha...原创 2018-09-07 20:59:15 · 572 阅读 · 0 评论 -
华为机试-简单错误记录中涉及的知识点
// 华为机试-简单错误记录.cpp: 定义控制台应用程序的入口点。/*题目描述开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理:1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;3、 输入的文件可能带路径,记录文件名称不能带路径...原创 2018-08-29 15:26:39 · 305 阅读 · 0 评论 -
关于字符串输入判断时的问题
先以一道题目说起吧,这是华为校招在线编程题比较简单的一道,题目要求如下:题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而...原创 2018-08-31 11:33:17 · 383 阅读 · 0 评论 -
校招时在线编程题目输入输出需要注意的地方总结大全
博主参加2019年校招,在线编程题总是gg,gg到怀疑人生。现在总结一下在线编程中关于输入输出需要注意的地方。本帖子会不断更新,直到记录到博主找到心仪的工作为止。1. 关于字符串的输入问题1.1 多行字符串的第一种输入方法输入:10.70.44.68~255.254.255.01.0.0.1~255.0.0.0192.168.0.2~255.255.255.019..0...原创 2018-08-27 23:47:49 · 1836 阅读 · 0 评论 -
2019互联网校招牛客网笔试刷题
写在前言:题主参加2019年互联网技术类校招笔试,现在在牛客网上刷题,主要刷的方向是 C++、数据结构、机器学习 ...原创 2018-08-30 21:37:16 · 3937 阅读 · 0 评论 -
编程题实战
有一串玛瑙项链,项链上面有N个玛瑙珠子,这些玛瑙有M (M < = 9) 种不同的颜色,购买的时候可以只选择购买项链长度为K(K<=n)的一段。现在有个苦逼的找不到工作的程序员想花最少的钱买到颜色最多的一段项链。要求时间复杂度O(N),空间复杂度O(1)。答案:看到这道题,第一时间想不到O(N)的思路不要慌,先来看看最裸的思路应该怎么写?枚举每一个买项链的位置,然后模拟一遍统计有多...原创 2018-09-06 16:55:25 · 205 阅读 · 0 评论 -
C++中map容器的用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...转载 2018-09-16 19:30:52 · 387 阅读 · 0 评论 -
看完这篇你还不懂指针,你捶我!!!
这篇关于指针的讲的超级接地气和详细,也全面转载:作者:冰吉凌链接:https://www.jianshu.com/p/2062bf912a59来源:简书第一章。指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址,即一个能够存放内存地址的变量。程序中引入指针,并不是对指针地址做什么处理,而是要通过指针地址,来对这个地址空间内的数据进行处理,所以我...转载 2019-06-30 12:07:09 · 239 阅读 · 0 评论 -
2018年爱奇艺算法岗位试卷第一场
1 当分配给一个进程的页面数增加时,页故障数可能增大也可能变小,下述算法符合这种情况的是(A)A FIFO算法B LRU算法C Clock算法D LFU算法解析:此题的题意是:在页面置换算法中,哪一种算法随着给定页面数的增加,缺页中断次数有可能还会增加或者减小。FiFo算法就是先进先出,最先调入的页面,在页面数满,并且发生缺页时,就置换出最早调入的。LRu算法就是...原创 2018-09-14 21:52:35 · 704 阅读 · 0 评论 -
C语言中switch分支选择语句的使用讲解
1 每个case后面没有加break的情况执行情况:情况分析:首先程序得到一个表达式的值以后,按照顺序开始比较,若发现一个分支一致,则就进入这个分支执行,因为没有break,则程序便不再判断,继续往下执行,直到执行完default之后跳出。 2 含有break的情况执行情况:运行分析:这个时候因为添加了break,则程序按照顺序开始查找,直到找到...原创 2018-09-24 22:05:32 · 2339 阅读 · 0 评论 -
c语言中strcpy()函数的使用注意点
strcpy()是C语言里面复制字符串的库函数, 函数声明包括在专门处理字符串的头文件<string.h>中:char * strcpy( char * dst, const char * src );这个函数把字符串src复制到一分配好的字符串空间dst中,复制的时候包括标志字符串结尾的空字符一起复制。操作成功,返回dst,否则返回NULL.楼主,你要注意,你的第二个字符串sr...原创 2018-09-24 21:35:21 · 2755 阅读 · 0 评论 -
c++中写一个返回一个二维数组的方法
依本人的见解,定义一个二维数组,可以直接用一个指向指针的指针来表示int **dp; //这样就定义了一个二维数组这里不多说,直接给出实现返回二维数组的一个函数,大家可以比葫芦画瓢用这个方法实现返回一个二维数组的函数。int **getdp(const char *str1, const char *str2){ int **dp; dp = (int **)ma...原创 2018-09-23 22:42:47 · 14311 阅读 · 0 评论 -
c++中sort()函数的用法简介
代码:#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int main(){ int a[] = {1,4,3,3,2,2,5,7,5,6}; sort(a, a + sizeof(a) ...原创 2018-09-16 20:48:22 · 167 阅读 · 0 评论 -
c++中set和multiset容器的区别和用法
当需要使用greater<int>时,在头文件里需要添加#include<functional> #include<iostream> #include<vector> #include<set> #include <functional> using namespace s...原创 2018-09-16 20:28:53 · 2754 阅读 · 0 评论 -
c++中的atoi()和stoi()函数的用法和区别
相同点:①都是C++的字符处理函数,把数字字符串转换成int输出②头文件都是#include<cstring>不同点:①atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char*类型的,而stoi()的参数是const string*,不需要转化为 const char*;...原创 2018-08-27 20:58:41 · 164503 阅读 · 10 评论 -
C++中substr()函数的用法
#include<string>#include<iostream>using namespace std;int main(){ string s("12345asdf"); string a = s.substr(0,5); //获得字符串s中从第0位开始的长度为5的字符串 cout << a << en...原创 2018-08-27 15:37:33 · 6533 阅读 · 0 评论 -
c++中sort()函数的一些用法
1.要使用sort函数只需用#include <algorithm> 即可使用,语法描述为:sort(begin,end),表示一个范围,例如:int _tmain(int argc, _TCHAR* argv[]){ int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout<<a[...原创 2018-08-18 17:03:40 · 1591 阅读 · 0 评论 -
深入 char * ,char ** ,char a[ ] ,char *a[]
1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。 2 指针。 指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址。。由于地址也是整数,在32位平台下,指针默认为32位。。 3 指针的指向? 指向的直接意思就是指针变量所保存的其他的地址单元中所存放的数据类型。 int * p ;//p 变量保存的地址所在...原创 2018-07-01 21:08:10 · 136 阅读 · 0 评论 -
C++中c_str()函数使用说明
语法: const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 1、比如:最好不要这样: char* c;s...转载 2018-06-19 12:55:12 · 568 阅读 · 0 评论 -
C++中堆区delete和delete[]的使用方法
一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型...原创 2018-06-29 14:51:33 · 756 阅读 · 0 评论 -
从一道C++面试题说起
从网络上看到这样一道有意思的题目,是关于数组与指针的问题,描述如下:main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}输出为:2,5请解释以上代码的输出结果。答案如下:*(a+1)其实很简单就是指a[1],输出为2.问题关键就在于第二个点,*(ptr-1)输出为多少?解释如...原创 2018-06-29 13:49:06 · 121 阅读 · 0 评论 -
C++中万能头文件浅析
现在先看一下下面这一堆乱七八糟的头文件显得莫名的冗杂: 1 #include <iostream> 2 #include <cstdio> 3 #include <fstream> 4 #include <algorithm> 5 #include <cmath> 6 #include <deque> ...原创 2018-06-22 22:05:18 · 2906 阅读 · 0 评论 -
C语言中使得函数返回一个一维数组的一种方法
在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。在大多数情况下,一维数组和一维指针是可以通用的。比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。 代码可以写成如下形式:int *int_array_create(int n)//参数n为数组元素个数{ int *r; if(n<=0...转载 2018-06-14 16:49:04 · 8361 阅读 · 0 评论 -
数组指针和指针数组的知识点
数组指针和指针数组的区别数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; ...原创 2018-06-21 23:41:57 · 208 阅读 · 0 评论 -
C语言中strcat()函数和strcpy()函数的用法
1 strcpy原型声明:extern char *strcpy(char* dest, const char *src);头文件:#include <string.h>功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。2 strcat原型...原创 2018-06-27 21:21:43 · 16068 阅读 · 0 评论 -
C语言中extern的用法
在 C 语言中,修饰符 extern 用在变量或者函数的声明前,用来说明“此变量 / 函数是在别处定义的,要在此处引用” 。1. extern 修饰变量的声明。 举例来说,如果文件 a.c 需要引用 b.c 中变量 int v,就可以在 a.c 中声明 extern int v ,然后就可以引用变量 v。能够被其他模块以 extern 修饰符引用到的变量通常是全局变量。 还有很重要的一点是,...原创 2018-06-28 10:41:57 · 3508 阅读 · 0 评论 -
为什么32位的系统内存中指针类型都占用4个字节的内存呢
在学习过程中知道,一个任何类型的指针变量所占的字节大小都为4个字节。这是为什么呢?内存是由字节组成的,每个字节都有一个编号。指针变量主要是存放相同数据类型的变量的首地址。这里的这个地址其实就是内存的某个字节的编号。而这个编号的确定是与地址总线有关。如果地址总线是32位,则它的寻址范围是0~2^32(0~4G)。那么为一个字节的编址就会由32个0或者1组成。例如第一个字节的编址是32个0,最后一...原创 2018-07-21 13:31:38 · 6094 阅读 · 0 评论 -
cout后面输出时加endl和不加endl的区别
本文探讨一下C++中使用的时候加endl和不加endl的区别首先,endl就是end line的区别,也就是“结束此行”,但实际上有两个操作1 换行2 对缓冲流进行冲刷,使得流中所有剩余字符被写入输出序列。其实作用说白了就是加<<endl后会有一个换行。下次再用cout输出字符时就会在下一行开始输出,如果不加,就会跟在当前行的最后输出。下面给出一个例子,这个例子是华为机试的例子,就是说...原创 2018-07-14 16:01:10 · 75491 阅读 · 3 评论 -
笔试在线编程题目中关于字符数组等一些需要注意的地方和技巧
1、综述 笔者最近正在参加2019年互联网公司提前批的校招,来自国内某985文科专业小硕,心仪的岗位准备投机器学习算法工程师。笔者也深深知道自己能力的欠缺。首先是coding能力还很欠缺,代码这种东西需要日积月累的不断去写、不断地去学习新的知识点在后来练习、在调试的过程中才能进步,发现自己不足的地方,并与志同道合的同行多交流。其次是机器学习算法工程师需要精通最起码常见的ML算法。比如...原创 2018-07-14 11:24:27 · 528 阅读 · 1 评论 -
c++的vector中删除符合条件的元素的方法
C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。1.std::vector::erase() 函数原型:iterator erase (iterator position); //删除指定元素 iterator erase (i...原创 2018-07-12 13:29:19 · 1511 阅读 · 0 评论 -
C++结构体中关于内存对齐的知识
一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。例一: #include <iostream> using namespace std; ...原创 2018-07-11 15:22:02 · 2244 阅读 · 0 评论 -
c++中的stack用法
c++stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO)使用该容器时需要包含#include<stack>头文件;定义stack对象的示例代码如下:stack<int>s1;stack<string>s2;stack的基本操作有:1.入栈:如s.push(x);2.出栈:如 s.pop().注意:出栈操作只...原创 2018-07-17 15:56:43 · 19623 阅读 · 1 评论 -
C++中的strlen()和sizeof的区别
strlenstrlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。 原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,原型为size_t strlen(const char *string);,其中s...原创 2018-06-28 15:29:43 · 216 阅读 · 0 评论 -
国内某知名无人机技术公司软件开发岗位求有效工作时间题目
/*1.1 要求:在DJI的工时打卡计算系统中,一个工作日的定义是由工作当日当天的凌晨03:00:00开始,到隔天凌晨03:00:00(不包含)为止。这其中,工作日当天的中午12:30:00到下午14:00:00(不包含)为午休时间,不计入工作时间。Tom由于工作繁忙,担心自己有时候会忘记打卡,因此他每次经过打卡机到时候都会不由自主地打一次卡。为了更好的了解自己的工作情况,Tom找到了自己整个八月...原创 2018-06-20 21:00:08 · 548 阅读 · 0 评论