C++学习笔记
学习C++基础的笔记,包括容器、模板、一些关键字的用法等
酱油何在
渣硕一枚
展开
-
【学习笔记】C++操作redis库
前段时间,在写一个后台服务框架,底层要用到redis的操作。因为编程语言用的是C++,而且是在Linux下,因此想要操作redis,必须要通过hiredis接口来实现。下面将介绍一下hiredis接口的用法。hiredis主要包括4个方法,灵活运用这4个方法,就可以对redis进行操作了。1. redisContext* redisConnectWithTimeout(const char原创 2015-08-15 20:26:10 · 9893 阅读 · 0 评论 -
【STL容器学习笔记】-顺序容器
STL提供了三个顺序容器:vector、list和deque。Vector和deque都是用数组来实现的,list是用链表来实现的。关于三者的实现原理和各自应用的场景我们做一下分析。1.vector就是动态数组,它是在堆中分配内存,如果vector中元素个数大于当前大小时,就会再分配内存。它拥有一段连续的内存空间,并且起始地址不变,因此它能很好地支持随机访问元素,即[ ]操作符。vector对原创 2015-08-18 09:31:26 · 3841 阅读 · 0 评论 -
【STL容器学习】-关联容器与map的使用方法
STL提供了4个关联容器:set、multiset、map和multimap。这些容器提供了通过关键字快速存储和访问数据元素的能力。Set和map不允许有重复关键字,而multiset和multimap允许重复关键字。关联容器的几个共同函数如下:find(key):搜索容器中具有指定关键字的元素,返回指向此元素的迭代器。lower_bound(key):搜索容器中具有指定关键字的第一个元素原创 2015-08-24 18:37:51 · 4140 阅读 · 0 评论 -
【STL容器学习】-容器适配器
STL提供了三种容器适配器:stack、queue和priority_queue。他们都是由顺序容器变化而来,用于处理特殊情况。本文主要讲一下stack和queue的用法。栈是一种先进后出的容器。栈支持的函数有以下几种:Push(element):将元素添加到栈顶。Pop():删除栈顶元素。Top():返回栈顶元素,不删除它。Size():返回栈的大小。Empty():若栈原创 2015-08-24 21:57:34 · 3581 阅读 · 0 评论 -
【STL容器学习】-迭代器
STL中的容器类广泛使用迭代器,迭代器是一种对象,使用它可方便地对容器中的元素进行遍历。迭代器与内置指针很相似,都提供了一种访问和操纵容器中元素的方便途径。迭代器可以分为以下5个类型:输入迭代器:用于从容器中读取元素,每一步只能沿向前的方向移动一个元素。输出迭代器:用于向容器中写入元素,每一步只能沿向前的方向移动一个元素。向前迭代器:包含输入输出迭代器的所有功能,既支持读操作又支持写操原创 2015-08-25 11:00:30 · 4356 阅读 · 0 评论 -
【C++学习笔记】sizeof()的用法与字节对齐
1.32位机器和64位机器下面各类型sizeof的大小。1) 32位机器下:Char类型:Size of charis: 1Size of unsigned charis: 1Size of signed charis: 1整型:Size of intis:原创 2015-09-07 15:33:24 · 4925 阅读 · 0 评论 -
【C++学习笔试】-模板
1.模板基础C++提供了函数和类机制,可用来设计可重用软件。而模板功能提供了在函数和类中将类型作为参数的能力。有了这种能力,我们就可以设计具有通用类型的函数或类,而编译器会在编译是将通用类型确定为一种具体的类型。我们从一个简单的例子开始,来看一下模板机制的必要性。假设我们分别想求两个整数和两个double型值中较大的,那么我们需要写两个重载函数,如下所示:int maxValue(in原创 2015-09-07 23:25:21 · 3555 阅读 · 0 评论 -
【C++面向对象学习笔记】-基础知识
1.基本概念面向对象程序设计是利用对象来进行程序设计。一个对象表示现实世界中一个独一无二的实体。例如,一名学生、一张桌子、一个圆等都可以看作对象。一个对象具有唯一的身份、状态和行为。一个对象的状态用数据域以及它们的当前值来表示。一个对象的行为由一组函数定义,对一个对象调用一个函数就是请求对象执行一个任务。相同类型的对象用一个通用的类来定义。一个类是一个模板或者一个蓝图,它定义了对象具有什么原创 2015-09-08 16:58:53 · 4461 阅读 · 0 评论 -
【C++学习笔记】const的用法
C++ const允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const修饰成员变量const可以用来修饰成员变量,告知编译器该成员变量是保持不变的。尤其要特别注意const修饰指针变量的情况:1)只有一个const,如果const位于*左侧,表示指针所指转载 2015-09-09 19:35:29 · 3617 阅读 · 0 评论 -
【C++学习笔记】-static的用法
1.面向过程设计中的static1)静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include void fn();static int n; //定义静态全局变量void main(){ n=20; cout<<n<<endl; fn();}void转载 2015-09-10 20:52:31 · 3756 阅读 · 0 评论 -
【C++面向对象学习笔记】-构造函数和析构函数
1.基本概念构造函数:一个类的构造函数的名字与类名是相同的。与一般函数类似,构造函数可以被重载。一个类通常都会有一个无实参的构造函数,这样的构造函数称为无实参构造函数。一个类的声明中可以不包含构造函数的声明。在这种情况下,相当于在类中隐含地声明了一个无实参的空构造函数。析构函数:析构函数是与构造函数相对的。当创建一个对象时,其构造函数被调用,而对象销毁时,析构函数被调用。如果程序员没有显式原创 2015-09-10 21:18:27 · 4210 阅读 · 0 评论 -
C++实现链表基本操作
前几天找实习的时候,一个面试官给我留了一个题,做一个链表demo,要求实现创建、插入、删除等操作。链表是一种常见的数据结构,它是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。我是用原创 2016-01-10 21:56:57 · 71506 阅读 · 7 评论