EAX、ECX、EDX、EBX寄存器的作用
摘要:注意:在计算加法时,实在32位的累加器上进行,并注意类型之间的转换,数据的截取问题一般寄存器:AX、BX、CX、DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器索引暂存器:SI、DISI:来源索引暂存器,DI:目的索引暂存器堆叠、基底暂存器:SP、BPSP:堆叠指标暂存器,...
阅读全文
浮点型在内存当中的存储方式
摘要:浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和 指数e。 ±mantissa × 2exponent(注意,公式中的mantissa 和 exponent使用二进制表示)底数部分 使用2进制数来表示此浮点数的实际值。指...
阅读全文
第十三章 类
摘要:1.类简单地说是一个性的数据类型。类当中有数据成员,和成员函数。类的基本思想就是体现出数据的抽象和封装。2.这里只需要说明一个问题即可:就是类成员函数的const类型:class SCREEN{public: const int get(const int& i , const int& j)const;};这里需要解释一下const int get(const int& i , const int& j)const;这一句的四个const分别表示是什么?本来这个内容是在第七章函数的时候已经介绍过了。在这里有了进一步的深刻了解。下面详细介绍一下:第一个const
阅读全文
第十二章 泛型算法 (下)
摘要:再谈迭代器,经过前面的几章节我们对迭代器有了大概的了解,本质上就是一个指针,即指向某一个地址的指针。1.插入迭代器:这类的迭代器与容器是绑定在一起的,实现在容器中插入元素的功能。主要有三种插入迭代器:(1)back_inserter()(2)front_inserter()(3)inserter(),该操作除了所关联的容器外,还有第二个参数:指向插入的起始位置的迭代器2.IOstream迭代器:istream_iterator用于读取输入流的迭代器,ostream_iterator用于写输出流的迭代器。标准库中定义了以下几种:(流迭代器之定义了最基本的操作:自增,解引用和赋值)istream_
阅读全文
第十二章 泛型算法 (上)
摘要:在使用标准库当中的算法时,记得要包含#include头文件,在学习算法的时候个人感觉主要了解到算法实现的功能和他所需要的参数即可使用算法了。下面主要介绍课本中提到的标准库算法1.只读算法:find和accumulate算法(该算法在#include头文件中)。accumulate(vec.begin(),vec.end(),value)是将容器中所有的元素累加,并且加上处置value。函数带有三个参数,头两个参数指定累加的范围,最后一个参数指定累加的初值。标准库也定义了find_first_of算法(类似于string中的find算法一样),该算法是带有两对迭代器参数来标记两段元素的范围,在第
阅读全文
第十一章 顺序容器和关联容器的比较
摘要:学完了顺序容器和关联容器之后呢,大概知道了顺序容器是容器内部的元素是按照顺序存储的,而关联容器是按照键值对来存储的。顺序容器可以通过下标的位置来访问相应的元素,而关联容器map是通过小标(键)来访问相应的值。最主要的是:其实这些容器都是模板类型的。 当然我觉得最重要的差异还是关联容器当中的元素的数据类型:pair类型的数据,即pairp1;make_pair(v1,v2);下面详细的来看一下顺序容器和关联容器在操作上的差异:1.首先不管是顺序容器还是关联容器都是要定义的,由于容器的类型不同,存在一些差异:(这里主要将常见的定义)顺序容器的定义:1.Cc ; 2. C c(n,t) ; ...
阅读全文
第十章 关联容器(下)
摘要:1.set类型的关联容器set容器跟map容器相类似,只不过set的容器只是单纯的键的集合。set容器不支持下标操作,元素类型不是value_type类型,而是key_type类型。即set容器仅仅只存储键,而没有所关联的值。与map容器一样,存储的键也必须是唯一的,不能修改。2.set的容器的定义setiset;创建一个空的set的对象iset,元素类型为T。setiset(b,e);创建一个set的对象iset,有迭代器b和e指定范围的元素初始化,元素必须是T类型。3.set的容器的添加元素由于set容器不支持下标操作,所以只有与map容器一样采用insert操作来添加元素。setset1
阅读全文
第十章 关联容器(上)
摘要:在将关联容器之前,我们首先了解都得是pair类型的数据。pair类型包含两个数据值,在创建pair类型的对象时,必须要提供两个类型名。即pair对象所包含的两个数据成员各自对应的类型名字。pair类型在utility的头文件中。1.创建pair类型的对象:pairp1;创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化。pairp1(v1,v2);创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为V1,second成员初始化为V2。make_pair(V1,V2);以V1,V2值创建一个新的pair对象,其中元素类型分别是V1和V2的类型。
阅读全文
第九章 顺序容器(上)
摘要:标准库里面定义了三种顺序容器:vector(支持快速随机访问),list(支持快速插入/删除),deque(双端队列)。标准库还提供了三种适配器:stack(后进先出(栈)),queue(先进先出(队列)),priority_queue(有优先级管理的队列)。1.迭代器和迭代器的范围:所有的容器都支持:接引用、自增、自减、以及相等和不等操作。但是vector和deque的迭代器还支持:算术运算(iter+/-n),复合赋值、关系运算 操作。2.顺序容器的操作:(1)容器定义的类型主要有:size_type(无符号整形,表明容器的长度)、iterator(容器的迭代器)、const_iterat
阅读全文
第八章 标准IO库
摘要:1.IO对象时不可复制或者赋值的:也就是说形参或者返回类型也不能为流类型。如果非要传递或者返回IO对象的的话,则必须传递或者返回指向对象的指针或者引用。如: ofstream &print(ofstream&);while(print(out2)){}。对IO对象的读写会改变它的状态,因此引用必须是非const的。2.流的条件状态:通过strm::iostate来定义流的条件状态strm::badbit 是strm::iostate类型的值,用来指示流被破坏了。strm::failbit是strm::iostate类型的值,用来指示IO操作失败。strm::eofbit是str
阅读全文
第七章 函数(后续)
摘要:1.主函数的形参:int main(int argc, char *argv[]){};第二个形参argv[]是一个C风格字符串数组,第一个形参argc则用于传递该数组中字符串的个数。2.return 语句: (1).返回引用时:当返回的是引用类型的时候,没有复制返回值。相反,返回的是对象本身,不是对象的副本。例如: const string& manip(const string& s1, const string& s2) { return s1.size()1)return faction(val-1)*val; return 1; }4.默认实...
阅读全文
第七章 函数
摘要:1.函数的定义: 函数主要包括:返回类型、函数名、形参表、函数体几个部分组成。2.函数参数的传递: (1)非引用型形参:参数是通过复制对应的实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的本身。如:int gcd(int v1,int v2) { while(v2){ int temp=v2; v2=v1%v2; v1=temp; } return v1; }循环体虽然修改了v1,v2的值,但这些变化仅限于局部参数,而对调用gc...
阅读全文
第五章 表达式
摘要:表达式这章比较简单,一般有过c的基础的人都应该问题不大,要知道连我都觉得比较简单,相信你们肯定更加容易了。 new和delete表达式:动态创建和释放数组,定义变量时,必须指定其数据类型和名字。然而动态创建对象时,只需要指定其数据类型,而不必为该对象命名。取而代之的是,new表达式返回值指向新创建对象的指针,我们通过指针来访问对象: int i; int *pi=new int; 这个new表达式在自由存储区中分配创建了一个整型对象,并且返回此对象的地址,并且该地址初始化指针pi;动...
阅读全文
第四章 数组和指针
摘要:数组:首先数组的初始化不允许直接复制和赋值,数组的元素的类型是size_t类型,可以通过for(size_t ix=0;ix!=array_size;++ix)。 指针:指针的定义: int *P;注意:在使用指针之前必须要初始化指针。并且对指针初始化的值应该使用如下四种值:1、0值常量表达式。例如和疑惑的0值得const对象和字面值常量0。2、类型匹配的对象的地址。3、另一个对象之后的下一地址。4、同类型的另一个有效指针。 听人家说指针的操作是最难的,但我对指针的理解就是如果要用到指针的话,首先你要必须要明确地知道对应的是变量地址还是变量值。比如如果有一个容器vector,那么你必须...
阅读全文
C++ primer的第三章的主要内容
摘要:第三章主要介绍了C++中标准库类型。主要讲到string和vector类型。在string类型中,能够很方便的操作字符串,应该要注意的地方就是它的字符串中元素的位置的类型是:size_type类型的数据,其中主要涉及到如何访问每一个字符串的字符:(下标法)for(string::size_type ix=0;ix!=s.size();++ix){}。(迭代器法)for(string::iterator iter=s.begin();iter!=s.end();++iter){}。 在vector类型中,要注意它的定义方式一般是vectorvec;同样也涉及到如何去访问容器当中的元素,其元...
阅读全文
C++ primer的第二章的主要内容
摘要:这第二章主要是介绍了C++中基本的内置数据类型:整型与浮点型。介绍了什么是变量的过程中了解到了左值与右值的概念。左值是可以出现在赋值语句的左边或者右边,也就是说可以放在等号的左右两边,而右值只能是出现在赋值语句的右边,不能在赋值语句的左边,也就是只能出现在等号的右边。 声明和定义这一节中要记住变量的定义只有一次,而声明的次数可以有很多次,并且它是以关键字extern来声明的。如extern int i;这就是声明一个int变量i;也有一种情况声明就是定义,那就是在声明的时候初始化了。如:extern double pi=3.1416;这就是表示声明并且定义了double型变量pi,后面就...
阅读全文
C++ primer的第一章的主要内容
摘要:第一章主要是把C++的主要的部分简单的介绍了一下,让读者对C++开始有一个简单的了解。看完第一章的收获就是知道如何去读入不确定数目的输入,主要是形式是:whlie(cin>>s){},利用这个循环来读入不确定数目的输入,但是这个循环有一个问题就是要设定什么时候输入已经结束,来退出循环。再有就是对类类型的数据有了最初的了解。明白了其实C++主要的过程是要学会用自定义的类类型的数据,就像是用内置类型的数据一样熟练。对于类类型的数据后续的章节还会学到,期待进一步的了解。
阅读全文