![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 63
hadoop2015
站在巨人的肩膀上继续前行着
展开
-
第十三章 类
1.类简单地说是一个性的数据类型。类当中有数据成员,和成员函数。类的基本思想就是体现出数据的抽象和封装。2.这里只需要说明一个问题即可:就是类成员函数的const类型:class SCREEN{public: const int get(const int& i , const int& j)const;};这里需要解释一下const int get(const in原创 2015-08-21 08:45:35 · 210 阅读 · 0 评论 -
第八章 标准IO库
1.IO对象时不可复制或者赋值的:也就是说形参或者返回类型也不能为流类型。如果非要传递或者返回IO对象的的话,则必须传递或者返回指向对象的指针或者引用。如: ofstream &print(ofstream&);while(print(out2)){}。对IO对象的读写会改变它的状态,因此引用必须是非const的。2.流的条件状态:通过strm::iostate来定义流的条件状态strm原创 2015-08-21 08:45:16 · 202 阅读 · 0 评论 -
第七章 函数(后续)
1.主函数的形参:int main(int argc, char *argv[]){};第二个形参argv[]是一个C风格字符串数组,第一个形参argc则用于传递该数组中字符串的个数。2.return 语句: (1).返回引用时:当返回的是引用类型的时候,没有复制返回值。相反,返回的是对象本身,不是对象的副本。例如: const string& manip(const str原创 2015-08-21 08:45:13 · 230 阅读 · 0 评论 -
C++ primer的第三章的主要内容
第三章主要介绍了C++中标准库类型。主要讲到string和vector类型。在string类型中,能够很方便的操作字符串,应该要注意的地方就是它的字符串中元素的位置的类型是:size_type类型的数据,其中主要涉及到如何访问每一个字符串的字符:(下标法)for(string::size_type ix=0;ix!=s.size();++ix){}。(迭代器法)for(string::iterat原创 2015-08-21 08:44:59 · 332 阅读 · 0 评论 -
C++ primer的第一章的主要内容
第一章主要是把C++的主要的部分简单的介绍了一下,让读者对C++开始有一个简单的了解。看完第一章的收获就是知道如何去读入不确定数目的输入,主要是形式是:whlie(cin>>s){},利用这个循环来读入不确定数目的输入,但是这个循环有一个问题就是要设定什么时候输入已经结束,来退出循环。再有就是对类类型的数据有了最初的了解。明白了其实C++主要的过程是要学会用自定义的类类型的数据,就像是用内置类型的原创 2015-08-21 08:44:52 · 307 阅读 · 0 评论 -
error LNK2001: 无法解析的外部符号
error LNK2001: 无法解析的外部符号 这个错误一般主要原因是:只在头文件中有定义,没有在cpp文件中实现。导致这个原因一般是在添加库文件的时候,仅仅只是包含了他的头文件,因此解决办法就是也应该要包含它的实现文件,如果没有.cpp文件,那么就应该是静态文件或者动态文件。只要添加了这个基本上就没问题了。原创 2015-08-21 08:45:59 · 461 阅读 · 0 评论 -
线程通信
一般可以有两种方式来实现线程间通信:1、使用全局变量2、使用自定义消息1、利用全局变量来实现线程通信通过一个例子来理解例子:设计一个以对话框为主界面的应用程序,当按下一个按钮时,启动一个从线程,该线程显示一个表示正在运行的对话框(在对话框的标题上显示一个随时间增加的数字),而当按下另一个按钮时从线程结束运行。实现:(1)用MFC创建一个基于对话框的应用程序,将ok按钮的标题修改为结原创 2015-08-21 08:45:55 · 324 阅读 · 0 评论 -
线程同步
在多线程的情况下,如果存在多个线程要使用同一个资源的情况时,这需要在线程之间进行协调(同步)才能是程序完成预定的工作,而不会出现灾难性的冲突。为了解决多线程之间的同步问题,MFC把对线程之间进行同步的一些基本操作封装在类CSyncObject中,为了适应在各种不同的情况下同步的需要,MFC又以类CSyncObject为基类派生了四种同步类,即事件,临界段,互斥体,和信号计数器,分别为:CEvent原创 2015-08-21 08:45:50 · 351 阅读 · 0 评论 -
进程与线程的管理
1、进程和线程的基本概念:在计算机系统中,一个正在运行的应用程序就叫做一个进程,一个进程可以有多个线程,进程的任务是有这个进程的所有线程共同配合来完成的。一个进程至少有一个线程,叫做主线程。2、工作线程的创建:如何创建一个工作线程是一个比较容易的,只要清楚开启线程函数的原型就很简单了。开启线程的函数是 AfxBeginThread,它主要有两种类型,分别是:CWinThread*原创 2015-08-21 08:45:45 · 250 阅读 · 0 评论 -
第五章 表达式
表达式这章比较简单,一般有过c的基础的人都应该问题不大,要知道连我都觉得比较简单,相信你们肯定更加容易了。 new和delete表达式:动态创建和释放数组,定义变量时,必须指定其数据类型和名字。然而动态创建对象时,只需要指定其数据类型,而不必为该对象命名。取而代之的是,new表达式返回值指向新创建对象的指针,我们通过指针来访问对象: int i;原创 2015-08-21 08:45:04 · 298 阅读 · 0 评论 -
如何区别PeekMessage&GetMessage SendMessage&PostMessage
转自http://blog.csdn.net/young0325/article/details/6430664Peekmessage和Getmessage都是向系统的消息队列中取得消息,不过性质不同。 若第一次向消息队列中取不到消息,则程序的主线程会被OS(操作系统)挂起;等到OS重新调度到该线程时,而且消息队列仍然是空的时,两者的性质不同: 若使用Getmessage(),则程序的原创 2015-08-21 08:46:14 · 488 阅读 · 0 评论 -
第九章 顺序容器(下)
1.容器的自增长:我们知道vector容器元素是连续存储的,当添加一个元素时,如果容器中已经没有空间容纳新的元素,这时候由于容器元素必须连续存储以便随机访问,所以vector必须重新分配存储空间,用来存放原来的元素以及新添加的元素,即存放在旧的存储空间的元素被复制到新的存储空间里,接着插入新的元素,最后撤销旧的存储空间。而对于不连续存储元素的容器而言,就不存在内存分配问题。例如list容器。原创 2015-08-21 08:45:20 · 192 阅读 · 0 评论 -
第十章 关联容器(上)
在将关联容器之前,我们首先了解都得是pair类型的数据。pair类型包含两个数据值,在创建pair类型的对象时,必须要提供两个类型名。即pair对象所包含的两个数据成员各自对应的类型名字。pair类型在utility的头文件中。1.创建pair类型的对象:pairp1;创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化。pairp1(v1,v2);创建一个pair原创 2015-08-21 08:45:23 · 211 阅读 · 0 评论 -
第十二章 泛型算法 (下)
再谈迭代器,经过前面的几章节我们对迭代器有了大概的了解,本质上就是一个指针,即指向某一个地址的指针。1.插入迭代器:这类的迭代器与容器是绑定在一起的,实现在容器中插入元素的功能。主要有三种插入迭代器:(1)back_inserter()(2)front_inserter()(3)inserter(),该操作除了所关联的容器外,还有第二个参数:指向插入的起始位置的迭代器2.IOs原创 2015-08-21 08:45:32 · 196 阅读 · 0 评论 -
第十二章 泛型算法 (上)
在使用标准库当中的算法时,记得要包含#include头文件,在学习算法的时候个人感觉主要了解到算法实现的功能和他所需要的参数即可使用算法了。下面主要介绍课本中提到的标准库算法1.只读算法:find和accumulate算法(该算法在#include头文件中)。accumulate(vec.begin(),vec.end(),value)是将容器中所有的元素累加,并且加上处置value。函数原创 2015-08-21 08:45:30 · 298 阅读 · 0 评论 -
第十章 关联容器(下)
1.set类型的关联容器set容器跟map容器相类似,只不过set的容器只是单纯的键的集合。set容器不支持下标操作,元素类型不是value_type类型,而是key_type类型。即set容器仅仅只存储键,而没有所关联的值。与map容器一样,存储的键也必须是唯一的,不能修改。2.set的容器的定义setiset;创建一个空的set的对象iset,元素类型为T。setiset(b,原创 2015-08-21 08:45:25 · 192 阅读 · 0 评论 -
第九章 顺序容器(上)
标准库里面定义了三种顺序容器:vector(支持快速随机访问),list(支持快速插入/删除),deque(双端队列)。标准库还提供了三种适配器:stack(后进先出(栈)),queue(先进先出(队列)),priority_queue(有优先级管理的队列)。1.迭代器和迭代器的范围:所有的容器都支持:接引用、自增、自减、以及相等和不等操作。但是vector和deque的迭代器还支持:算术运算原创 2015-08-21 08:45:18 · 187 阅读 · 0 评论 -
第七章 函数
1.函数的定义: 函数主要包括:返回类型、函数名、形参表、函数体几个部分组成。2.函数参数的传递: (1)非引用型形参:参数是通过复制对应的实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的本身。如:int gcd(int v1,int v2) { while(v2){ int temp原创 2015-08-21 08:45:11 · 231 阅读 · 0 评论 -
lib静态链接库,dll动态链接库,h文件
最近在弄摄像头,发现我在调用摄像头自带的函数的时候,库没连接上,于是经过高人指点,学习了一下lib静态链接库,dll动态链接库来补充一下自己的基础知识。一、首先我们来介绍一下lib静态链接库。 lib静态链接库是在编译时要用到,如果只需要编译源代码的话只要有.lib文件就好了。下面主要讲一下在vs2010中如何使用自己建立的.lib文件,以及如何使用lib文件。 1、建立lib文原创 2015-08-21 08:45:37 · 503 阅读 · 0 评论 -
第四章 数组和指针
数组:首先数组的初始化不允许直接复制和赋值,数组的元素的类型是size_t类型,可以通过for(size_t ix=0;ix!=array_size;++ix)。 指针:指针的定义: int *P;注意:在使用指针之前必须要初始化指针。并且对指针初始化的值应该使用如下四种值:1、0值常量表达式。例如和疑惑的0值得const对象和字面值常量0。2、类型匹配的对象的地址。3、另一个对象之后的下一原创 2015-08-21 08:45:01 · 265 阅读 · 0 评论 -
C++ primer的第二章的主要内容
这第二章主要是介绍了C++中基本的内置数据类型:整型与浮点型。介绍了什么是变量的过程中了解到了左值与右值的概念。左值是可以出现在赋值语句的左边或者右边,也就是说可以放在等号的左右两边,而右值只能是出现在赋值语句的右边,不能在赋值语句的左边,也就是只能出现在等号的右边。 声明和定义这一节中要记住变量的定义只有一次,而声明的次数可以有很多次,并且它是以关键字extern来声明的。如extern原创 2015-08-21 08:44:56 · 318 阅读 · 0 评论 -
线程同步
在多线程的情况下,如果存在多个线程要使用同一个资源的情况时,这需要在线程之间进行协调(同步)才能是程序完成预定的工作,而不会出现灾难性的冲突。为了解决多线程之间的同步问题,MFC把对线程之间进行同步的一些基本操作封装在类CSyncObject中,为了适应在各种不同的情况下同步的需要,MFC又以类CSyncObject为基类派生了四种同步类,即事件,临界段,互斥体,和信号计数器,分别为:CEvent原创 2015-08-21 08:45:48 · 219 阅读 · 0 评论 -
第十一章 顺序容器和关联容器的比较
学完了顺序容器和关联容器之后呢,大概知道了顺序容器是容器内部的元素是按照顺序存储的,而关联容器是按照键值对来存储的。顺序容器可以通过下标的位置来访问相应的元素,而关联容器map是通过小标(键)来访问相应的值。最主要的是:其实这些容器都是模板类型的。 当然我觉得最重要的差异还是关联容器当中的元素的数据类型:pair类型的数据,即pairp1;make_pair(v1,v2);下面详细的来看原创 2015-08-21 08:45:28 · 293 阅读 · 0 评论 -
线程通信
一般可以有两种方式来实现线程间通信:1、使用全局变量2、使用自定义消息1、利用全局变量来实现线程通信通过一个例子来理解例子:设计一个以对话框为主界面的应用程序,当按下一个按钮时,启动一个从线程,该线程显示一个表示正在运行的对话框(在对话框的标题上显示一个随时间增加的数字),而当按下另一个按钮时从线程结束运行。实现:(1)用MFC创建一个基于对话框的应用程序,将ok按钮的标题修改为结原创 2015-08-21 08:45:50 · 281 阅读 · 0 评论