c++
文章平均质量分 75
qdlgdx_lsy
这个作者很懒,什么都没留下…
展开
-
容器vector部分功能的实现
这是c++ primer书中的例题。实现了vector容器的部分功能。具体内容在第四版的18.1节。要考虑到vector的内存分配策略。下面分别是用allocator(注释的部分)和new,delete实现的。1.allocatorallocate(size_t t);分配原始的未构造内存以保存t个对象deallocate(p, n);释放内存。construct(p, t);原创 2013-08-19 16:11:57 · 606 阅读 · 0 评论 -
c++资源管理-----RAII
c++资源管理-----RAII 资源就是一旦使用了它,将来必须还给系统。如果不这样,糟糕的事情就会发生。C++程序中最长使用的资源是动态分配内存。但内存只是你必须管理的众多资源之一。其他的资源还包括文件描述器(file description)、互斥锁(mutex locks)、图形界面中的字形和笔刷、数据库连接以及网络socket。不论那一种资源,重要的是,当你不再使用时,原创 2013-11-08 10:57:03 · 1183 阅读 · 0 评论 -
c++内存管理之三------常见的内存错误及其对策
c++内存管理之三------常见的内存错误及其对策常见的内存错误及其对策如下:1.内存分配未成功,却使用了它解决办法是在使用内存之前检查指针是否为NULL。如果p是函数的参数,那么在函数入口处用assert(p != NULL)进行检查。如果是用malloc或new来申请内存,应该用if(p == NULL)或者 if(p != NULL)进行防错处理。2.内存分配虽然成功,但是转载 2013-11-06 17:09:54 · 818 阅读 · 0 评论 -
C++内存管理之二--------控制c++的内存分配
C++内存管理之二--------控制c++的内存分配一个防止堆破碎的通用方法是从不同固定大小的内存池中分配不同类型的对象。对每个类重载new和delete就提供了这样的控制。1.重载全局的new和delete操作符void * operator new(size_t size) { void *p = malloc(size); return p;}void operat转载 2013-11-06 16:27:13 · 691 阅读 · 0 评论 -
C++内存管理之一---------内存分配方式
C++内存管理之一---------内存分配方式1.内存分配方式简介在C++中,内存分为5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,在执行函数时,函数内局部变量的存储单元可以在栈上创建,函数执行结束时这些存储单元自动释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆,由new分配的内存块,它们的释放编译器不去管,由我们的应用转载 2013-11-06 15:57:00 · 809 阅读 · 0 评论 -
c++ Queue的实现
本例是c++ primer中模板那章的一个例题。自己实现的Queue。主要是讲解了模板的基础用法。下面是代码,注释还行。#include #include using namespace std;template class Queue;template ostream& operator &que);template class QueueItem { //私有类原创 2013-08-14 21:04:05 · 2297 阅读 · 0 评论 -
c++ 找出序列中出现得最频繁的值
题目要求:编写一个函数模板,接受表示未知类型迭代器的一对值,找出在序列中出现的最频繁的值。自己写的代码没有考虑存在出现次数最多且相同的情况,也就是默认输出第一次最多的数值。#include #include #include using namespace std;//找到容器中出现次数最多的值template typename T::value_type find(T fi原创 2013-08-14 11:44:38 · 1753 阅读 · 0 评论 -
c++ primer中关于单词转换的程序
这是在第四版c++ primer书中第10章10.3.9的程序。觉得很好,记下来。#include #include #include #include #include #include using namespace std;/*in1.txt中的内容'em themcuz becausegratz gratefuli Inah nopos supposeds原创 2013-08-09 12:48:46 · 677 阅读 · 0 评论 -
c++ primer中一个类的设计和实现
这道题目是C++ primer中第12章的一个习题,习题12.13.这个题目给你一步步的实现并完善了题目的要求。比较适合初学者。题目的要求就是扩展书上的Screen 类,使之包含move,set,display操作,完成如下测试:myScreen.move(4,0).set('#').display(cout);//myScreen为屏幕类的一个对象,move使光标移到(4,0)点,se原创 2013-08-09 19:14:12 · 732 阅读 · 0 评论 -
c++ 消息处理
因为这个类的设计涉及到了拷贝构造函数和重载赋值操作符。下面把这个类的实现代码贴出来(有些方法没有实现):#include #include using namespace std;class Message;class Folder { friend class Message; public: private: set messages;//指原创 2013-08-11 00:41:46 · 670 阅读 · 0 评论 -
c++ 管理指针成员
c++采用以下三种方式管理指针成员:1.指针成员采取常规指针型行为。这样的类具有指针的所有缺陷但无需特殊的复制控制。2.类可以实现所谓的“智能指针”。指针所指向的对象是共享的,但类能够防止悬垂指针。3.类采取值型行为。指针所指向的对象是唯一的,由每个类对象独立管理。下面给出“智能指针”的实现:#include using namespace std;class Has_P原创 2013-08-11 00:33:45 · 525 阅读 · 0 评论 -
c++ 重载的成员访问操作符
箭头操作符(必须定义为类成员函数)和解引用操作符(不要求定义为成员)常用在实现智能指针的类中。下面是c++ primer中第14.6节的一个比较完整的测试例子:#include #include using namespace std;class ScreenPtr;class Screen { public: //此种构造方法能处理传递过来的s,完成对屏幕原创 2013-08-12 15:41:58 · 862 阅读 · 0 评论 -
c++面向对象编程的一个例子(书店)
本例子是c++ primer书中第15章面向对象编程的一个贯穿全章的例子:#include #include #include using namespace std;/*Item_base类定义了book和net_price函数并且需要存储每本书的ISBN和标准价格*/class Item_base { public: Item_base(const原创 2013-08-13 19:19:45 · 972 阅读 · 0 评论 -
异常安全的auto_ptr类的简单实现
通过定义一个类来封闭资源的分配和释放,可以保证正确释放资源。这一技术常称为"资源分配即初始化",简称RAII.auto_ptr类就是异常安全的“资源分配即初始化”技术的例子。更详细的介绍请点击这里。下面是auto_ptr类的简单的实现。#include //#include using namespace std;template class Auto_ptr { p原创 2013-08-21 11:29:03 · 602 阅读 · 0 评论 -
如何阅读源代码
我们在写程式时,有不少时间都是在看别人的代码。 例如看小组的代码,看小组整合的守则,若一开始没规划怎么看, 就会“噜看噜苦(台语) ” 不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。 网路上有一篇关于分析看代码的方法,做为程式设计师的您,不妨参考看看, 换个角度来分析。 也能更有效率的解读你想要的程式码片段。转载 2013-11-29 14:44:41 · 872 阅读 · 1 评论