随笔分类 -  基础知识总结

摘要:C++中动态内存的分配是在堆中进行的,主要通过下面3个方面:1.new和deletenew和delete很常见,new运算符分配内存,并且同时调用对象的构造函数,delete释放内存,并且调用对象的析构函数,但是new 和delete管理内存需要手动分配和释放内存,然而在程序中很难选择适当的时机释放... 阅读全文
posted @ 2015-08-26 21:12 runninglzw 阅读(199) 评论(0) 推荐(0)
摘要:除了每个容器定义的迭代器之外,在标准库头文件iterator中还定义了额外几种迭代器1.插入迭代器插入迭代器是一种迭代器适配器,它接受一个容器,返回一个迭代器,能实现向容器添加数据插入迭代器有3中类型,都是返回一个容器的插入迭代器,区别是所插入的位置不同(1)back_inserter(vec):创... 阅读全文
posted @ 2015-08-23 15:14 runninglzw 阅读(171) 评论(0) 推荐(0)
摘要:泛型算法只是依赖于迭代器的操作,而不是依赖于容器泛型算法可以分为3大类:下面的vec和vec2代表相同类型的容器1.只读算法:只允许读取其输入范围内的元素,而不改变元素find(vec.cbegin(),vec.cend(),k)查找算法:前两个参数表示元素范围的迭代器,第三个参数k表示要查找的元素... 阅读全文
posted @ 2015-08-22 22:01 runninglzw 阅读(784) 评论(0) 推荐(0)
摘要:1.容器类型按关键字有序保存元素:map:用来保存键值对,关键字不可以重复set:只保存关键字,关键字不可重复multimap:用来保存键值对,关键字可以重复multiset:只保存关键字,关键字可以重复无序集合:unordered_map:用哈希函数组织的mapunordered_set:用哈希函... 阅读全文
posted @ 2015-08-16 18:23 runninglzw 阅读(234) 评论(0) 推荐(0)
摘要:顺序容器总结:array:固定大小的数组,支持快速访问,不能添加和删除元素vector:动态数组,支持快速访问,但在尾部之外插入或删除元素会很慢string:与vector相似的容器,用于保存字符deque:双向队列,支持快速随机访问,在头尾位置插入元素速度很快list:双向链表,支持双向访问,在链... 阅读全文
posted @ 2015-08-15 19:01 runninglzw 阅读(1049) 评论(0) 推荐(0)
摘要:1.==运算符对于值类型:==运算符比较的是两个操作数的值是否相等,值相等返回true,否则返回false对于引用类型:==运算符比较的是两个引用对象是否指向同一个对象,下面看一个具体的栗子:#include#include<iostreausing namespace stdint m{strin... 阅读全文
posted @ 2015-05-02 19:43 runninglzw 阅读(217) 评论(0) 推荐(0)
摘要:封装:它的意义在于防止代码被恶意篡改它提供了许多访问修饰符来保证封装:public 访问无限制protected 只能在本类和派生类中访问private 只能在本类中访问internal 只有同一个项目中的类可以访问继承:一个类继承另一个类,子类可以访问父类中的属性和方法,除非父类的访问权限不允许多... 阅读全文
posted @ 2015-04-17 18:31 runninglzw 阅读(166) 评论(0) 推荐(0)
摘要:1.多线程基本概念进程:一个程序运行时所占用的所有资源。一个进程可由多个线程组成。线程:一个进程中的执行单元,可以共享进程中的资源。多线程:一个程序有多个线程执行执行各自的任务。多线程的优点:CPU利用率速率提升了,当一个线程阻塞时,程序不必等他就绪,可以先执行其他的线程。多线程的缺点:线程也需要分... 阅读全文
posted @ 2015-04-16 21:59 runninglzw 阅读(4447) 评论(1) 推荐(0)
摘要:内存泄露是指变量或者对象在程序中不需要使用,但它还占用着内存空间一般内存泄露发生的情况有如下两种:1.在堆中申请的内存没有释放2.对象已经不需要使用,但它还占用内存C#和Java中有垃圾回收器,所以不存在第一种情况,而C++不存在垃圾回收机制,两种情况都存在。但是C#,Java中也不是完全依赖于系统... 阅读全文
posted @ 2015-04-16 16:27 runninglzw 阅读(203) 评论(0) 推荐(0)
摘要:工厂模式:实质是由一个工厂类根据传入的参数,动态决定创建哪一类产品,也就是创建哪一个类的实例,一个类代表一个产品工厂模式有如下3个角色:1.工厂:工厂类可以直接被外界调用,创建所需要的产品2.抽象:一般是具体产品的父类3.具体产品:工厂模式的创建目标,继承自抽象的子类C#经常使用反射来实现工厂模式,... 阅读全文
posted @ 2015-04-15 22:11 runninglzw 阅读(218) 评论(1) 推荐(0)
摘要:1.单例模式它的特点是:1.构造参数是私有的,可以防止其他类实例化它,即一个类只有一个实例2.用一个静态变量来保存类的实例3.提供一个全局访问点,使用一个公有的静态方法来实例化它下面是一个支持多线程的单例模式代码:using System;using System.Collections.Gener... 阅读全文
posted @ 2015-04-15 21:22 runninglzw 阅读(152) 评论(0) 推荐(0)
摘要:1.基本概念同步:指定线程的执行顺序,比如有两个线程A,B都要访问资源的时候,B执行了途中需要A的结果,所以B先让出资源,等A执行结束后再执行B互斥:多个线程访问系统资源的时候,同时只能有一个线程对资源进行访问2.线程间的同步和互斥是通过操作系统中信号量和PV原语来实现的PV操作是由P操作原语和V操... 阅读全文
posted @ 2015-04-15 16:20 runninglzw 阅读(513) 评论(0) 推荐(0)
摘要:1.按作用域分析:全局变量的作用域是整个程序,局部变量的作用域是声明它的函数2.按生命周期分析:全局变量的生命周期结束于应用程序结束,局部变量的生命周期结束于函数的结束3.按内存分配区来分析:首先内存分为如下几个区:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。... 阅读全文
posted @ 2015-04-14 21:17 runninglzw 阅读(1240) 评论(0) 推荐(0)
摘要:1.引用相当于一个变量的别名,指针指向内存,存放的是变量的地址2.引用在定义之后必须被初始化,指针不需要初始化错误案例:int p0; int &p1; p1=p0;3.引用在初始化之后的值不可以改变,指针可以改变这点从编译角度来分析的话, 程序在编译时分别将指针和引用添加到符号表中,符号表存的是变... 阅读全文
posted @ 2015-04-14 19:39 runninglzw 阅读(226) 评论(0) 推荐(0)