
C++基础
Free Jim
这个作者很懒,什么都没留下…
展开
-
文件描述符 fd
open()会返回一个文件描述符其实就是个int我们第一次调用open() 返回的数字是3因为0,1,2都已经被占用了0—stdin,标准输入流1—stdout,标准输出流2—stderr,标准错误流下面搞点例子理解一下:1、标准输出ls > l.txt这就是把ls 的内容通过管道传输给l.txt而ls 的内容对应的即标准输出stdout像我们print()出来的内容也是在标准输出中所以我们大可以用dup2()把标准输出与具体文件连接在一起然后print()可以直接输出到原创 2020-07-13 11:54:29 · 594 阅读 · 0 评论 -
动态申请内存 malloc用法
为自定义结构体申请内存:(file是我自定义的一个结构体)file* n=(file*)malloc(sizeof(file));Ps:需要作强制转化,malloc原本返回值类型是void*参数是所申请的内存大小,单位是字节n得是指针类型,指向那块内存,之后用指针的形式访问n->size;...原创 2020-07-13 11:10:38 · 633 阅读 · 0 评论 -
C 文件重命名
rename(原文件名,新文件名);参数类型都是字符串修改成功返回值为0,失败返回-1原创 2020-07-13 11:07:21 · 643 阅读 · 1 评论 -
C 获取文件大小
int file_size(char* filename){ FILE *fp=fopen(filename,"r"); if(!fp) return -1; fseek(fp,0L,SEEK_END); int size=ftell(fp); fclose(fp); return size;}返回值则是文件大小(单位:字节)原创 2020-07-13 11:00:35 · 588 阅读 · 0 评论 -
C 获取当前时间
time_t local_time;struct tm *t;time(&local_time);t=gmtime(&local_time);printf("当前时间为:%d/%d/%d/%d/%d/%d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour+8,t->tm_min,t->tm_sec);Ps:因为直接获取的那些时间不是北京时间,需要另外处理一下才可以~...原创 2020-07-13 10:58:20 · 469 阅读 · 0 评论 -
C++抛出异常
int main(){ try { throw exception("login bms server first !"); } catch (exception & e) { cerr << e.what() << endl; } return 0;}这是在黑框框中显示的...原创 2020-06-23 19:56:03 · 172 阅读 · 0 评论 -
C++ 数组越界后
int main(){ int* a=new int[10]; cout<<&a[111]<<endl; cout<<&a[112]<<endl; delete []a; return 0;}原创 2020-06-23 19:54:53 · 237 阅读 · 0 评论 -
内联函数
内联函数比普通函数执行效率更高内联函数是直接把函数代码插入到主调函数中,不像普通函数一样要利用栈进行跳转分析:内联函数的代价是消耗更多的内存,以内存来换时间Ps:内联函数中不要包含循环,选择语句原因:如果含有循环,选择语句,即使用inline声明为内联函数,编译器仍然会把其当作普通函数处理inline add(int a,int b){ return a+b;}main(){ ...原创 2020-05-01 18:50:14 · 208 阅读 · 0 评论 -
树转化成二叉树
1.把所有兄弟节点连起来2.所有节点只保留左孩子原创 2020-01-11 19:27:33 · 582 阅读 · 0 评论 -
排序的稳定性
举个简单的例子:4 3 2 2 1从小到大排序,稳定性就是指——相等的 2 的相对位置会不会改变原创 2019-12-07 12:05:52 · 111 阅读 · 0 评论 -
当你第一眼看到它
虽然表示路径是\但是你却不得不打成两个\如果不多加一个\则会有 \ " 会合为一体—— \ 是转义字符要表示 \ 本身 则需要多加一个杠——语法原创 2019-12-02 22:53:18 · 146 阅读 · 0 评论 -
循环队列的精髓
原创 2019-11-24 20:31:09 · 159 阅读 · 0 评论 -
位运算的一些技巧
一:指定位取反和1做异或(1⊕1=0,0⊕1=1)二:指定位不变和0做异或(1⊕0=1,0⊕0=0)三:指定位置0和0做&运算(1&0=0,0&0=0)四:指定位置1和1做 | 运算(1|1=1,0|1=1)然后,目标位置的0,1则可以由十六进制定义int数得到五:可以位移出去再回来置0六:~0xFF 相当于把前面全部置1...原创 2019-11-18 22:56:08 · 97 阅读 · 0 评论 -
C++ 实现二叉树各种遍历的非递归实现
一:先序的非递归实现void pre_order(Node* p){ Node* stack[10]; int top=-1; //使得top直接指向栈顶 while(p!=NULL) { while(p->left!=NULL) { printf("%c\n",p->data);...原创 2019-11-18 22:42:09 · 373 阅读 · 0 评论 -
C语言也可以写脚本
下面有一个关于批量文件处理的程序:把n个命名有规律的图片文件复制到指定目录大概思路是,创建一个缓冲区,把文件放入缓冲区,再输出到指定目录,循环进行#include<iostream>using namespace std;char A[10]; //文件名char B[20]="d:\\"; //指定路径void getstring(int i){ ...原创 2019-11-16 10:34:04 · 13742 阅读 · 4 评论 -
C语言文件操作的参数
这里有一个易错点:参数选择 “r”和 “rb”到底有什么不同选择“r”时,为文本模式——文件按字符读取——char选择“rb”时,为二进制模式——不局限于文本文件,甚至可以对图片,视频进行操作...原创 2019-11-16 10:25:37 · 598 阅读 · 0 评论 -
warning C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
warning C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型当变量的值处于临界状态时会出现该警告原创 2019-11-11 17:40:27 · 945 阅读 · 0 评论 -
C++ template
模版这一块内容体现了C++的可以移植性。所谓模版,就是写定一个模版,适用于各种数据类型(函数模版:对int,double 都可以统一处理 )(类模版:构造一个“包罗万象”的类,如STL中的各种容器)template 的模版主要分为函数模版和类模版。(1):函数模版#include<iostream>#include<algorithm>#include <...原创 2019-06-25 10:00:40 · 156 阅读 · 0 评论 -
vector容器的文件操作
不能把整个容器占据的内存整个写到文件中,因为容器中除了每个单元之外还有指针。所以,应该一个一个单元地放进去。(之前指针指向的地址再次使用时已经废了)写入操作:#include<iostream>#include<algorithm>#include <vector>#include <fstream>using namespace s...原创 2019-06-23 14:32:08 · 1095 阅读 · 0 评论 -
C++的多态性
C++的多态性主要是重载和虚函数。一:先是重载,分为函数重载和运算符重载。函数重载:虽然函数名相同,但是函数内容不同,靠参数不同来区分。例子:对 f() 进行重载:#include<iostream>#include<algorithm>#include <vector>#include <fstream>using namesp...原创 2019-06-23 20:07:54 · 4905 阅读 · 0 评论 -
科学计数法输出
科学计数法的输出格式为:%e#include<iostream>using namespace std;int main(){ double n=100000; printf("%e",n); return 0;}输出:1.000000e+005表示1*10的5次方,即100000#include<iostream>using ...原创 2019-07-02 11:34:34 · 10795 阅读 · 0 评论 -
vector at()和下标访问哪个好?
vector 是可以直接用下标进行访问的一类容器,vector <int> A;A.push_back(1);cout<<A[0];输出:1但是,有些资料上说vector 最好用at() 进行访问,这是为什么呢?这是因为at()有对元素是否越界进行判断,如果越界,马上抛出异常 out_of_range(但是,这个异常是跟踪进去调试的时候才会出现的)如果...原创 2019-06-29 18:57:40 · 18060 阅读 · 0 评论 -
vector 的内存分配问题
vector 的内存分配问题vector 有一个机制是这样的,如果新加入一个元素,让size 大于capacity,那么vector 就会重新找一块更大的地方再把数据放进去,下面进入调试:这是原本vector首个元素的地址,这时size 和capacity 都是1,下面新增一个元素让size大于capacity可以看到当size 大于capacity 之后内存确实进行重新分配,vecto...原创 2019-06-29 19:02:46 · 1225 阅读 · 0 评论 -
vector end()的返回值
end()的返回值begin()返回的是第一个元素的迭代器,但是end()返回的却是末尾元素再下一个元素的迭代器,下面进入调试界面详细了解一下:i 的地址和end 的地址差了4,刚好是 int 4个字节的大小,说明end 在 i 后面一个单位 (也扩充一下,vector 的物理内存其实是连续的)上图是i 做了自加运算往后推了一位之后的结果,地址和end 一样了!所以,遍历容器的时候,...原创 2019-06-29 19:08:14 · 13487 阅读 · 2 评论 -
c++ unique()去重
vector 是可以直接用下标访问的一类容器vector <int> A;A.push_back(1);cout<<A[0];可以不断的往里面放东西,不用像普通数组一般担心越界还有很多函数供调用unique()–去重unique(A.begin(),A.end())但是注意这里并没有删除元素,只是把元素移到了末尾vector<int>:...原创 2019-06-29 19:17:01 · 7190 阅读 · 0 评论 -
set容器的坑
#include<iostream>#include<algorithm>#include <vector>#include <fstream>#include <string>#include <set>using namespace std;class person{ char name[20];...原创 2019-07-15 11:24:25 · 130 阅读 · 0 评论 -
字符串大小的比较
字符串大小比较的步骤:从左至右一位一位比较,如果相同,则继续下一位,如果不同,则谁的ASCII大谁的字符串就大如果比较到其中一者已经结束了,还没有分出大小,则长度长的字符串大...原创 2019-07-05 23:38:35 · 26412 阅读 · 0 评论 -
转义字符
转义字符" \ "在很多地方都有出现 PS:注意方向向右,向左是打注释的方向。。转义字符常见的应用是:\n——换行符\t ——制表符(相当于四个空格)很明显就是改变字符原有的意思——转义又比如,你要让你的显示出双引号:#include<iostream>using namespace std;int main(){ cout<<"这是一个双引号:""...原创 2019-07-05 23:54:44 · 522 阅读 · 0 评论 -
二进制,八进制,十六进制输出c\c++
首先介绍简单的八进制和十六进制输出——只要通过格式控制符就可以了 ~八进制:%o#include<iostream>using namespace std;int main(){ printf("%o",8); return 0;}运行结果:十六进制:%x#include<iostream>using namespace std;i...原创 2019-07-06 00:12:09 · 841 阅读 · 0 评论 -
go to语句c++
goto 执行语句可以跳转到任意位置在寄存器中有着非常重要的作用这里用c++写了一段代码演示:#include<iostream>using namespace std;int main(){ int n=10; if(n>5) goto man; cout<<"you do not get it"<<endl; ma...原创 2019-07-06 21:41:32 · 4293 阅读 · 0 评论 -
编程的坑
数据范围:int—— - 2^31 ~ 2^31——最多到10位 21474836484个字节,一个字节占8位,第一位为符号位,剩余31位,31次方unsigned int —— 0 ~ 2^32——最多到10位 4294 967 296float —— - 2^23 ~2^23 ——最多到7位 83886084个字节,第一位为符号位,接下来八位为指数位(用于表示小数),剩...原创 2019-07-06 22:43:39 · 195 阅读 · 0 评论 -
C++的文件操作
C++的文件操作主要是依赖于头文件中相关的类头文件:‘fstream’主要使用到的:ifstream,ofstream,fstream分别用于输入,输出,输入/输出下面是文件的写操作:#include<iostream>#include <fstream>using namespace std;int main(){ ofstream in("lian...原创 2019-06-21 11:39:25 · 187 阅读 · 0 评论