
c++学习笔记
文章平均质量分 68
iwi_ac
爱生活 爱思考 爱编程 希望和志同道合的朋友一起交流!
ACmer Linuxer
展开
-
C++:STL标准入门汇总
http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.htmlC++:STL标准入门汇总学无止境!!!第一部分:(参考百度百科) 一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Men转载 2014-10-05 20:53:42 · 482 阅读 · 0 评论 -
信号
信号: 通常将软件中断称之为信号。在很多大型应用中都会运用到信号(signal)信号作用:提供了一个处理异步事件的方法:如终端用户键入中断键,会通过信号机制停止一个程序,或者及早的终止管道中的下一个程序原创 2016-03-24 21:40:41 · 377 阅读 · 0 评论 -
【C/C++】Linux下使用system()函数一定要谨慎
曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么方法,这里必须要搞懂system()函数,因为还是有很多人用了system()函数,有时你不得不面对它转载 2016-03-14 20:31:04 · 757 阅读 · 0 评论 -
C语言文件读写操作中缓冲区问题和setbuf函数详解
清除和设置文件缓冲区(1).清除文件缓冲区函数: int fflush(FILE *stream); int flushall(); fflush()函数将清除由stream指向的文件缓冲区里的内容,常用于写完一些数据后,立即用该函数清除缓冲区,以免误操作时,破坏原来的数据。 flushall()将清除所有打开文件所对应的文件缓冲区。(2).设置文件缓冲区函数 void setbu转载 2016-03-14 21:24:41 · 1330 阅读 · 0 评论 -
linux下 fork(),vfork(),clone()的用法及区别
fork,vfork,clone都是linux的系统调用,用来创建子进程的(确切说vfork创造出来的是线程)。先介绍下进程必须的4要点:a.要有一段程序供该进程运行,就像一场戏剧要有一个剧本一样。该程序是可以被多个进程共享的,多场戏剧用一个剧本一样。b.有起码的私有财产,就是进程专用的系统堆栈空间。c.有“户口”,既操作系统所说的进程控制块,在linux中具体实现是task_structd.有独立转载 2016-03-15 16:21:31 · 364 阅读 · 0 评论 -
c++:template使用中的常见报错
/usr/include/c++/4.8.2/bits/stl_algobase.h:216:5: note: const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = int] max(const _Tp& __a, const _Tp& __b)和库函数中的函数重名了,c++希望你能给函数改个名字原创 2016-04-30 10:39:33 · 1653 阅读 · 0 评论 -
void *变量用法
void含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,定义一个void变量没有意义,不妨试着定义: void a; 这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没转载 2016-05-02 15:34:06 · 6258 阅读 · 0 评论 -
ftok函数(file to key)
统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名,id是子序号。在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为65538,换算成16进制转载 2016-05-28 17:22:02 · 770 阅读 · 0 评论 -
ftok函数用法
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key_t值将会被返回,否则 -转载 2016-05-28 17:36:50 · 4876 阅读 · 0 评论 -
面试精选:链表问题集锦
面试精选:链表问题集锦链表问题在面试过程中也是很重要也很基础的一部分,链表本身很灵活,很考查编程功底,所以是很值得考的地方。我将复习过程中觉得比较好的链表问题整理了下。http://wuchong.me/blog/2014/03/25/interview-link-questions/下面是本文所要用到链表节点的定义:struct Node{ i转载 2016-05-05 10:22:23 · 416 阅读 · 0 评论 -
openat函数用法示例
//http://m.blog.youkuaiyun.com/article/details?id=47796173《Unix环境高级编程》的第三章和第四章出现了大量的以at结尾的函数,如openat、fstatat等,书中只是粗略的说明了下,没有实际的例子让人很难懂。int openat(int dirfd, const char *pathname, int flags, mode_t转载 2016-05-17 21:11:20 · 4127 阅读 · 0 评论 -
C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)1、cin 2、cin.get() 3、cin.getline() 4、getline() 5、gets() 6、getchar()附:cin.ignore();cin.get()//跳过一个字符转载 2016-04-23 19:48:05 · 328 阅读 · 0 评论 -
error: 'EOF' was not declared in this scope的解决办法
解决方法是在报错文件的最开始加上#include ,因为EOF、stderr等都是在这个文件中定义的。或者将cool升级到MinGW 4.4;原创 2016-04-23 20:10:15 · 6951 阅读 · 0 评论 -
c++:warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
首先,它任然是有效的C++代码,应为你写的char* 是具有c风格的字符串,所以g++不识别可以选择在编译的时候加上:g++ -Wno-write-strings text.cpp原创 2016-04-24 16:33:37 · 14359 阅读 · 2 评论 -
文件读写: 二进制方式和文本方式的区别
首先要明白一点,就是无论你用哪种语言进行程序设计,也无论你用哪个函数进行文件操作(库函数也好,直接操作系统API也好),最终的文件打开的操作都是由操作系统来进行的,因此各种语言的情况从本质上来说都是相同的。 用二进制模式打开一个文件的时候,文件本身的内容和你编写程序时用函数读到的内容完全相同(或者说和磁盘上的内容完全相同)。 但是如果用了文本模式,那么操作系统在将文件内转载 2016-05-19 20:57:28 · 899 阅读 · 0 评论 -
数据段、代码段、堆栈段、BSS段的区别
5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的转载 2016-06-27 20:37:41 · 770 阅读 · 0 评论 -
#Pragma Pack(n)与内存分配
#pragma pack作用:修改编译器的对齐方式程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。编译器中提供了#pragma pack(n)来设定变量以n字节对齐方式。n字节对齐就是说变量存放的起始地址的偏移量有两种情况:第一、如果n大于等于该变量所占用的字节数,原创 2016-06-28 11:45:05 · 350 阅读 · 0 评论 -
指针与引用的区别
区别如下:1)初始化要求不同。引用在创建的同时必须初始化,即引用一个有效对象;而指针的定义时并不用初始化,可以在后面任何地方重新赋值;2)可修改性不同。引用一旦被初始化为指向一个对象,它就不能被改变成另一个对象的引用;而指针在任何时候都可以改变为指向另一个对象。给引用赋值并不是改变它和原始对象之间的关系。3)不存在NULL引用,引用不能使用空值得引用,它必须指向一个对象原创 2016-06-30 16:48:05 · 330 阅读 · 0 评论 -
与原子操作相关的 volatile 和 sig_atmotic_t
1).volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,每次使用时都需要去内存里重新读取它的值,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int转载 2016-03-22 16:40:29 · 906 阅读 · 0 评论 -
freopen函数
当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。 使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。 函数名:fre转载 2016-04-04 13:37:25 · 451 阅读 · 0 评论 -
编译错误stray ‘\343’ in program解决办法
小二今天写远程控制数据代码时候遇到了stray ‘\343’ in program MYSQL_ROW sqlrow;调了一段时间 发现代码一点问题没有就是不知道问题在哪于是我把MYSQL_ROW sqlrow;重新敲了一遍 一番推敲发现了问题的所在这种错误是由于代码中含有中文的引号or其他的全脚符号引起的,而小编遇到的是由中文空格引起的,不易发现通过命令 cat原创 2016-04-02 14:35:56 · 19007 阅读 · 0 评论 -
getline基本用途
据说是这样的 gets()已经退出c++的库了 所以不能在用它了新来了一个 getline (- -莫名其妙)int main(){char s[1314];cin.getline(s,1314,"\n");//遇到换行符结束}int main(){string s;getline(cin,s);}ps:非常慢 比cin还慢原创 2015-01-17 11:15:28 · 656 阅读 · 0 评论 -
c++课程设计(水)
图书管理系统:百度来源#include#include #include #include #include //输入/输出文件流类using namespace std;const int Maxr=100;//最多的读者const int Maxb=100;//最多的图书const int Maxzf=5;//每位读者最多借五本书//读者类,实现对读者的信息的描述cl原创 2015-01-04 11:38:11 · 856 阅读 · 0 评论 -
c++ system(“color XX”)具体颜色及其用法;
1.改变整个控制台的颜色用 system("color 0A"); 其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下: 0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A原创 2015-01-04 20:26:08 · 45991 阅读 · 1 评论 -
ispalpha函数与islower
isupper原型:extern int isupper(int c);头文件:(旧版本的编译器使用ctype.h>)功能:判断字符c是否为大写英文字母说明:当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。附加说明: 此为宏定义,非真正函数。islowerislower(测试字符是否为小写字母)相关函数isalph原创 2015-04-18 09:20:26 · 813 阅读 · 0 评论 -
deque函数
deque函数:deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素。但它又与vector不同,deque支持高效插入和删除容器的头部元素,因此也叫做双端队列。deque类常用的函数如下。(1) 构造函数deque():创建一个空dequedeque(int nSize):创建一个d原创 2015-04-20 12:03:30 · 2659 阅读 · 0 评论 -
c++时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Uni转载 2015-11-25 16:13:50 · 529 阅读 · 0 评论 -
c++ 银行管理系统
资源:#include#include#include#include#include#include#include#includeusing namespace std;class Function;class User{public: void get( ); friend class Function; void print(); v原创 2015-12-12 12:23:57 · 12980 阅读 · 6 评论 -
回显是什么鬼?浅谈
linux c 里面出现了一个叫做tcgetattr 和tcsetattr的两个函数 他们的功能能是获取回显位 以及设置回显位详解http://blog.chinaunix.net/uid-10747583-id-97303.html那么什么是回显?你在键盘上按下一个“键”,如果在电脑上同时显示出你按的内容,这就是回显;如果没有显示,就不回显。典型的两个原创 2016-01-25 15:19:01 · 11443 阅读 · 2 评论 -
termios结构体
关于terimos结构体在POSIX规范中定义的标准接口,它类似于系统V中的termio接口,通过设置termios类型的数据结构中的值和使用一小组函数调用,你就可以对终端接口进行控制。最小的termios结构的典型定义如下:struct termios{ tcflag_t c_iflag; /* 输入模式 */原创 2016-01-26 17:19:34 · 1202 阅读 · 0 评论 -
C语言main函数的参数及其返回值详细解析
返回值的作用main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。下面我们在winxp环境下做一个小实验。首先编译下面的程序:int main( void ){ return 0;}然后打开附件里的“命令提示符”,在命令行里运行刚才编译好的可执行文件,然后输入“echo%ERRO转载 2016-03-01 21:11:35 · 1052 阅读 · 0 评论 -
pthread_cleanup_push/pop函数使用方法
一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如原创 2016-03-29 17:35:06 · 7293 阅读 · 0 评论 -
进程与线程的区别与联系(经典面试题)
这问题,估计计算机专业的同学在找研发等工作的时候都会遇到过。前几天某老牌软件厂商的电话面试就提到了这一经典问题,今天招聘会上又有不少同学说在面试的时候被问到这点。在这里我就起个头,大家有啥想法意见等都欢迎回帖交流。 要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解。 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本转载 2016-03-17 15:26:19 · 2907 阅读 · 0 评论 -
c语言操作数据库sql
1.连接数据库。 从C语言连接MySQL数据库包含两个步骤: a)初始化连接句柄结构; b)实际创建连接。 首先使用mysql_init初始化连接句柄: MYSQL * mysql_init (MYSQL *); 通常传递一个空指针给mysql_init这个函数,它会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有转载 2016-03-07 21:23:42 · 5004 阅读 · 0 评论 -
堆和栈区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2016-03-20 15:58:06 · 345 阅读 · 0 评论 -
文本文件与二进制的区别
突然想起了这个基础性的问题,自己一直对它的区别不是很清楚,于是今天上午研究下了,分享下自己的理解。(对它很清楚的同学们可以略过此篇文章)大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是转载 2016-03-08 21:29:33 · 1166 阅读 · 0 评论 -
c语言操作mysql
用c语言连接MYSQL数据库包含两个步骤:1.初始化一个链接句柄结构;2.实际进行连接//mysql_real_connect(...);首先,使用mysql_init来初始化连接句柄:#includeMYSQL *mysql_init(MYSQL *);通常你传递NULL给这个例程,它会返回一个指向新分配的连接句柄结构的指针。如果你传递一个已有的结构,它将被重新初转载 2016-04-01 21:28:35 · 545 阅读 · 0 评论 -
mysql_store_result和mysql_use_result
同:两者均是连接外部程序处理参数,并返回结果集。异:从服务器上检索结果集的行,前者只是启动一个逐行的检索,后者从服务器检索结果集的时候就提取了行,并且为之分配内存,存储到客户机中。操作处理:mysql_store_result:获取全部数据集保存到本机,因此在随后的mysql_fetch_row()就再也不会返回错误,当返回NULL的时候表示已经到达数据集的末端。m转载 2016-04-01 21:52:51 · 2843 阅读 · 0 评论 -
TCP/IP详解--拥塞控制 & 慢启动 快恢复 拥塞避免
TCP的拥塞控制1. 拥塞:即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。 拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有转载 2016-10-09 15:47:43 · 444 阅读 · 0 评论