自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Black_Man的专栏

--在技术的道路上摸索前进……

  • 博客(25)
  • 收藏
  • 关注

转载 条款11:理解自定义分配器的正确用法

条款11:理解自定义分配器的正确用法你用了基准测试,性能剖析,而且实验了你的方法得到默认的STL内存管理器(即allocator )在你的STL需求中太慢、浪费内存或造成过度的碎片的结论,并且你肯定你自己能做得比它好。或者你发现allocator对线程安全采取了措拖,但是你只对单线程的程序感兴趣,你不想花费你不需要的同步开销。或者你知道在某些容器里的对象通常一同被使用,所以你想在一个特别的堆里

2006-07-08 19:06:00 2063

转载 条款12:对STL容器线程安全性的期待现实一些

条款12:对STL容器线程安全性的期待现实一些标准C++的世界是相当保守和陈旧的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有其他进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是它将因实现而不同。当然,多线程程序是很普遍的,所以大部分STL厂商努力使他

2006-07-08 19:06:00 1423 1

转载 条款10:注意分配器的协定和约束

条款10:注意分配器的协定和约束分配器是怪异的。它们最初是为抽象内存模型而开发的,允许库开发者忽略在某些16位操作系统上near和far指针的区别(即,DOS和它的有害产物),但努力失败了。分配器也被设计成促进全功能内存管理器的发展,但事实表明那种方法在STL的一些部分会导致效率损失。为了避免效率冲击,C++标准委员会向标准中添加了词语,把分配器弱化为对象,同时也表达了他们不会让操作损失能力的

2006-07-08 19:04:00 1223

转载 条款8:不要把auto_ptr放入容器

条款8:不要把auto_ptr放入容器作者: winter 本来没有打算自己翻译Effective STL的,怕影响大家情绪:),只是发现有些条款在网络上找不到,只好自己翻译了。--Winter坦白的讲,这个条款不应加入本书,因为包含atuo_ptr的容器(COAPs)本来在STL中就是禁止的。就算你这么用了,编译器也不会编译你的代码。而标准委员会也没有解释为什么不能这样。对于COAP

2006-07-08 19:03:00 960

转载 条款9:在删除选项中仔细选择

条款9:在删除选项中仔细选择假定你有一个标准STL容器,c,容纳int,Container c; 而你想把c中所有值为1963的对象都去掉。令人吃惊的是,完成这项任务的方法因不同的容器类型而不同:没有一种方法是通用的。如果你有一个连续内存容器(vector、deque或string——参见条款1),最好的方法是erase-remove惯用法(参见条款32):c.erase(re

2006-07-08 19:03:00 1132

转载 条款8:不要把auto_ptr放入容器

条款8:不要把auto_ptr放入容器作者: winter 本来没有打算自己翻译Effective STL的,怕影响大家情绪:),只是发现有些条款在网络上找不到,只好自己翻译了。--Winter坦白的讲,这个条款不应加入本书,因为包含atuo_ptr的容器(COAPs)本来在STL中就是禁止的。就算你这么用了,编译器也不会编译你的代码。而标准委员会也没有解释为什么不能这样。对于COAP

2006-07-08 19:02:00 990

转载 条款7.使用包含由new产生的指针容器时,切记在容器销毁前delete指针

条款7.使用包含由new产生的指针容器时,切记在容器销毁前delete指针容器在STL中被认为是智能的。它们支持向前和向后的迭代器;它们能告诉你它所保存的对象类型(通过typedef value_type);在插入和删除过程中它们进行了良好的内存管理;它们将报告自己包含了多少对象和自己最多能包含多少对象(分别通过size和max_size取得);并且,当容器销毁时,它自动销毁每个被包含的对

2006-07-08 19:00:00 1433

转载 条款6: 当心C++另人迷惑的解析

 条款6: 当心C++另人迷惑的解析 假如你有一个整数构成的文件,需要把它复制到一个list中.以下代码看起来是一个很有意义的方法: ifstream dataFile("ints.dat");list data(istream_iterator(dataFile), // warning! this doesnt do               istream_i

2006-07-08 18:59:00 926

转载 条款5:尽量使用区间成员函数代替它们的单元素兄弟

条款5:尽量使用区间成员函数代替它们的单元素兄弟快!给定两个vector,v1和v2,使v1的内容和v2的后半部分一样的最简单方式是什么?不要为“当v2有偶数个元素时才有一半”而烦恼,只要做一些合理的东西。时间到!如果你的答案是v1.assign(v2.begin() + v2.size() /2, v2.end()); 或者其他很相似的东西,你就答对了,可以获得金质奖章。如果你的

2006-07-08 18:57:00 1050

转载 条款4:用empty()来代替检查size()是否为0

 条款4:用empty()来代替检查size()是否为0对于任意容器c,写下if (c.size() == 0)...本质上等价于写下if (c.empty())...这就是例子。你可能会奇怪为什么一个构造会比另一个好,特别是事实上empty()的典型实现是一个返回size()是否返回0的内联函数。你应该首选empty()的构造,而且理由很简单:对于所有的标准容器,em

2006-07-08 18:55:00 985

转载 条款4:用empty()来代替检查size()是否为0

 条款4:用empty()来代替检查size()是否为0对于任意容器c,写下if (c.size() == 0)...本质上等价于写下if (c.empty())...这就是例子。你可能会奇怪为什么一个构造会比另一个好,特别是事实上empty()的典型实现是一个返回size()是否返回0的内联函数。你应该首选empty()的构造,而且理由很简单:对于所有的标准容器,em

2006-07-08 18:55:00 850

转载 条款 2: 小心对“容器无关代码”的幻想

 条款 2: 小心对“容器无关代码”的幻想STL是建立在泛型之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。这只是个开始。独立的容器类型泛化为序列或关联容器,而且类似的容器拥有类似的功能。标准的内存相邻容器(参见条款1)都提供随机访问迭代器,标准的基于节点的容器(再参见条款1)都提供双向迭代器

2006-07-08 18:54:00 785

转载 条款3:使容器里对象的拷贝操作轻量而正确

 条款3:使容器里对象的拷贝操作轻量而正确容器容纳了对象,但不是你给它们的那个对象。此外,当你从容器中获取一个对象时,你所得到的对象不是容器里的那个对象。取而代之的是,当你向容器中添加一个对象(比如通过insert或push_back等),进入容器的是你指定的对象的拷贝。当你从容器中获取一个对象时(比如通过front或back),你取到的是容器中那个对象的拷贝。拷进去,拷出来。这就是STL

2006-07-08 18:54:00 859

原创 条款1:仔细选择你的容器

条款1:仔细选择你的容器你知道C++中有很多你可以支配的容器,但是你意识到有多少吗?要确定你没有忽略你的选项,这里有一个快速回顾。 标准STL序列容器:vector、string、deque和list。 标准STL关联容器:set、multiset、map和multimap。 非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一

2006-07-08 18:53:00 804

原创 Effective STL前言

It came without ribbons!It came without tags! It came without packages, boxes or bags!——Dr. Seuss, How the Grinch Stole Christmas!, Random House, 1957我第一次写关于Standard Template Library的东西是在1995年,那时,我决

2006-07-08 18:51:00 849

转载 深入分析MFC文档视图结构(项目实践)

深入分析MFC文档视图结构(项目实践)       k_eckel:http://www.mscenter.edu.cn/blog/k_eckel文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而

2006-06-25 08:59:00 1489

原创 【转】心痕(三)

 回家咯~~工作的事情还没确定,等消息中……所以这几天在学校实在无所事事,心里很乱。跟着老爸一起回家了,在家安定几天。       大半年没回来了,老妈想死我了,嗯,这次回来要好好陪陪老爸老妈,他们年纪都大了,以后工作了在一起的时间就更少了,不过回来看到咱妈还是那么年轻精神,真的好高兴,谁让我有个快乐的老妈呢,谁让她有个乖儿子呢,吃完饭老爸居然还给我拿包烟丢在桌上,强~,一定要做让咱爸咱妈骄傲

2006-05-17 15:30:00 866

原创 【转】心痕(二)

 最近忙着找工作,干什么都没有心情了,前两天去了上海面试msn~~很想见见你,可是……        感觉的出来,你对我已经没有任何好感了,也许在你心中对我只有的刻骨铭心的恨,一个月,是的一个月,我答应你一个月不再和你联系,从10月9号到11月9号,我全身心的投入到找工作当中,我不知道自己为什么拼命要去上海,不知道为什么……       很想去趋势却放弃了,因为在南京;放弃了很多机会,连尝试都

2006-05-17 15:28:00 1119

原创 【转】心痕(一)

刚刚浏览了一部片子--《一个故事》,黎明演的,他也老了,唉……剧情不是很吸引人,但是开场白的一句话我始终记得很清楚--“要忘记一个电话号码,比记住一个电话号码,要来的难得多”真的,好难。就在前几天,别人问我电话号码时,我还会错把你的电话号码报给别人,或是整个号码,或是把我们的号码掺杂在一起,我也老了,越来越糊涂记得前段时间,总是冲动的把你的号码从手机上删除,然后再添加,再删除,再添

2006-05-17 15:27:00 829

原创 C++类静态数据成员与类静态成员函数

在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢?   这个问题便是本章的重点:   声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。  下面我们用几个实例来说明这个问题,类的成员需要保护,通常情况下为了不违背类的封装特性,我们是把类成

2006-05-17 15:24:00 832

原创 【转】C++程序设计之四书五经

C++程序设计之四书五经(上篇)《程序员》2004/02 C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许

2006-05-17 15:16:00 893

转载 WTL for MFC Programmers, Part II - WTL GUI Base Classes

Download demo project - 119 Kb Contents Introduction to Part II WTL Overview Beginning a WTL EXE WTL Message Map Enhancements What You Get with the WTL AppWiza

2006-05-16 13:48:00 2630

转载 WTL for MFC Programmers, Part I - ATL GUI Classes

Download demo project - 45.5 Kb Contents README.TXT Introduction to the Series Introduction to Part I ATL Background ATL and WTL history

2006-05-16 13:44:00 3508

转载 VC常用数据类型使用转换详解

VC常用数据类型使用转换详解 (zhuan tie) 作者:程佩君刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="女侠程佩君";char temp[200];char *

2005-05-04 15:53:00 1055

转载 CListCtrl用法(收藏)

1。先来介绍REPORT类型的CListCtrl:首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle );其中 LVS_EX_CHECKBOXES 表示添加CheckBox LVS_EX_FULLROWSELECT 表示选择整行 LVS_EX_GRIDLINES 表示添加表格线如果设置了LVS_EX_CHEC

2005-05-04 15:50:00 1275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除