![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++ & stl
dengjiang1999
这个作者很懒,什么都没留下…
展开
-
reinterpret_cast的本质(转)
先看看下面的代码:#include iostream> using namespace std;void main() { int i = 875770417; couti" "; char* p = reinterpret_castchar*>(&i); for(int j=0; j4; j++) coutp[j]; coutendl转载 2008-11-28 17:05:00 · 999 阅读 · 0 评论 -
C/C++数组名与指针区别深层探索
作者:宋宝华 e-mail:21cnbao@21cn.com 1. 引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:“数组名就是指针”。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的转载 2009-03-04 10:20:00 · 494 阅读 · 0 评论 -
C/C++语言可变参数表深层探索
作者:宋宝华 e-mail:21cnbao@21cn.com 1.引言 C/C++语言有一个不同于其它语言的特性,即其支持可变参数,典型的函数如printf、scanf等可以接受数量不定的参数。如: printf ( "I love you" ); printf ( "%d", a ); printf ( "%d,%d",转载 2009-03-04 10:33:00 · 532 阅读 · 0 评论 -
算法学习建议
http://www.cppblog.com/Leon916/archive/2008/07/06/55480.html一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以转载 2009-03-06 14:19:00 · 606 阅读 · 0 评论 -
学习指针不可少的好文章
为初学者服务。这是我的帖子的宗旨。我也是个初学者(强调了无数遍了) ,我以我的理解把初学者觉得难懂的东西用浅显的语言写出来。由于小学时语文没学好,所以竭尽全力也未必能达到这个目的。尽力而为吧。指针是c和c++中的难点和重点。我只精通dos下的basic。c语言的其它各种特性,在basic中都有类似的东西。只有指针,是baisc所不具备的。指针是c的灵魂 。 我不想重复大多数书上说得转载 2009-05-18 15:29:00 · 543 阅读 · 0 评论 -
fstream的用法
这个小知识点迷糊了很久了,前段时间始终没有搞清楚,今天又拿过来看的时候好象明白了点...... 今天将ifstream 与ofstream的用法归纳一下ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:转载 2009-05-31 11:31:00 · 647 阅读 · 0 评论 -
C++完美实现Singleton模式
Singleton模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却也不是件容易的事情。1. 标准的实现class Singleton{public: static Singleton * Instance() { if( 0== _instance) {转载 2009-06-11 15:13:00 · 601 阅读 · 1 评论 -
STL的一些常用的用法
toupper,tolower 地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法: string s("heLLo"); transform(s.begin(), s.end(), s.begin(), ::toupper);转载 2009-06-24 13:56:00 · 1067 阅读 · 0 评论 -
find_if和函数对象结合实现对自定义类型vector的查找 复杂结构体查询某个值
实现NAT穿透需要对client的IP和port 进行同时查找,这就需要自定义的结构体,然后声明一个此种类型的vector,每次客户发起连接的时候都要查找一下此表,如果存在此客户端的ip 和port 就返回,否则将此结构体加入到转发列表中。#include "stdafx.h"#include #include #include #include #include #inc转载 2009-07-02 16:58:00 · 2500 阅读 · 0 评论 -
详细解说 STL 排序(Sort)
作者Winter 详细解说 STL 排序(Sort) 0 前言: STL,为什么你必须掌握 1 STL提供的Sort 算法 1.1 所有sort算法介绍 1.2 sort 中的比较函数 1.3 sort 的稳定性 1.4 全排序 1.5 局部排序 1.6 nth_element 指定元素排序 1.转载 2009-07-03 14:31:00 · 565 阅读 · 0 评论 -
SGI STL: list::sort()算法
文章来源: http://dzbjet.spaces.live.com/blog/cns!b69ae5707b3539f!116.entry源码:// list 不能使用STL 算法 sort(),必须使用自己的 sort() member function,// 因为STL算法sort() 只接受RamdonAccessIterator. // 本函式采用 quick sort. tem转载 2009-07-03 14:40:00 · 1406 阅读 · 0 评论 -
条款35:通过mismatch或lexicographical比较实现简单的大小写无关字符串比较
一个STL菜鸟最常问的问题是“我怎么使用STL来进行大小写无关的字符串比较?”这是一个令人迷惑的简单问题。大小写无关字符串比较要么真的简单要么真的困难,依赖于你要多一般地解决这个问题。如果你忽略国际化问题而且只关注于设计成字符串strcmp那样的类型,这个任务很简单。如果你要有strcmp不具有的按语言处理字符串中的字符的能力(也就是,容纳文本的字符串是除了英语以外的语言)或程序使用一个local转载 2009-09-08 14:18:00 · 736 阅读 · 0 评论 -
Qt vs MFC
在网上看到的,拿来和大家一起讨论下。蓝字均为转载 我曾经使用过QT和MFC来开发过软件,我想和大家分享我使用他们时所体会的不同之处。 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰。但是,我在这里是用我自己的语言来表达我自己的经验,希望能和你分享。英语比不是我的母语,所以可能会有一些用词古怪,词句错误之处,请发信给我,我可以改正他们。转载 2009-07-12 15:22:00 · 1049 阅读 · 0 评论 -
C++中extern "C"含义深层探索
作者:宋宝华 e-mail:21cnbao@21cn.com 出处:太平洋电脑网1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕转载 2009-03-06 17:33:00 · 412 阅读 · 0 评论 -
C/C++语言void及void指针深层探索
作者:宋宝华 e-mail:21cnbao@21cn.com 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,vo转载 2009-03-06 14:20:00 · 442 阅读 · 0 评论 -
软件设计本质论(Essential Design) —从链表设计说起
转载时请注明出处:http://blog.csdn.net/absurd/ 大师说,软件设计不过是在适当的时候做出适当的决策罢了。对此我深以为然,好的设计就是做出了正确决策。然而,在多种互相竞争的因素下,要好做出正确的决策可不是件容易的事!本文以一个双向链表的设计为例,阐述一下软件设计为什么这样困难。 双向链表无疑是最简单的数据结构之一。即使没有系统的学习过《数据结构》的程序转载 2009-02-13 17:40:00 · 670 阅读 · 0 评论 -
函数指针与软件设计
记得刚开始工作时,一位高手告诉我,说,longjmp和setjmp玩得不熟,就不要自称为C语言高手。当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法。后来明白那不单是跳来跳去那样简单,而是一种高级的异常处理机制,在某些情况下确实很有用。 为了显示自己的技巧,也在自己的程序中用过几次。渐渐发现这样的技巧带来的好处是有代价的,破坏了程序的转载 2009-02-13 17:48:00 · 419 阅读 · 0 评论 -
大内高手—常见内存错误
大内高手—常见内存错误 随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。 而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后转载 2009-02-13 17:52:00 · 468 阅读 · 0 评论 -
大内高手—共享内存与线程局部存储
大内高手—共享内存与线程局部存储 城里的人想出去,城外的人想进来。这是《围城》里的一句话,它可能比《围城》本身更加有名。我想这句话的前提是,要么住在城里,要么住在城外,二者只能居其一。否则想住在城里就可以住在城里,想住在城外就可以住在城外,你大可以选择单日住在城里,双日住在城外,也就没有心思去想出去还是进来了。 理想情况是即可以住在城里又可以住在城外,而不是走向极端。转载 2009-02-13 17:53:00 · 601 阅读 · 0 评论 -
闰年的计算方法及程序算法的实现
由于这个问题找的人还是非常多,所以今天我把它从我原来的blog上转过来,希望对大家有所帮助。这篇文章是我去年的时候写的,那时候还没用PHP,所以闰年的计算方法没有PHP的,今天在这里补充上这段代码,$y代表年份:第一种算法:if($y%400==0 || ($y%4==0 && $y%100!=0)){echo "是";}else{echo "不是";}第二种算法:if($y%转载 2008-12-03 17:46:00 · 19153 阅读 · 1 评论 -
大内高手--调试手段及原理
大内高手--调试手段及原理 知其然也知其所以然,是我们《大内高手》系列一贯做法,本文亦是如此。这里我不打算讲解如何使用boundschecker、purify、valgrind或者gdb,使用这些工具非常简单,讲解它们只是多此一举。相反,我们要研究一下这些工具的实现原理。 本文将从应用程序、编译器和调试器三个层次来讲解,在不同的层次,有不同的方法,这些方法有各自己的长处转载 2009-02-13 17:50:00 · 475 阅读 · 0 评论 -
大内高手—内存管理器
大内高手—内存管理器 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-9 作为一个C程序员,每天都在和malloc/free/calloc/realloc系列函数打交道。也许和它们混得太熟了,反而忽略了它们的存在,甚至有了三五年的交情,仍然对它们的实现一无所知。相反,一些好奇心转载 2009-02-13 17:56:00 · 521 阅读 · 0 评论 -
大内高手—全局内存
转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:李先静 更新时间:2007-7-9有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空间很有帮助。因为有好几转载 2009-02-13 17:58:00 · 437 阅读 · 0 评论 -
怎样持久化一个对象
徐波 翻译 当我疲惫地穿过走廊时,正是欧洲当地时间零点十分。我已经筋疲力尽,又有三个下午的值班在等着我。 一小束柔和的光散发到凉爽的金属走廊上。梅杰.吉尔伯的房门微开着,我想这是巧合,尽管通风系统最近工作负荷太重很可能也是一个原因。更巧合的是,科洛纳正在梅杰的办公室与梅杰会谈,而不是相反。 另一方面,我听见里面正好有低语声肯定不是巧合,我慢下脚转载 2008-12-09 17:46:00 · 721 阅读 · 0 评论 -
一道著名外企面试题的抽丝剥茧
宋宝华 21cnbao@21cn.com 软件报问题:对于一个字节(8bit)的数据,求其中“1”的个数,要求算法的执行效率尽可能地高。分析:作为一道著名外企的面试题,看似简单,实则可以看出一个程序员的基本功底的扎实程度。你或许已经想到很多方法,譬如除、余操作,位操作等,但都不是最快的。本文一步步分析,直到最后给出一个最快的方法,相信你看到本文最后的那个最快的方法时会有惊诧的感觉。解转载 2009-03-03 13:50:00 · 395 阅读 · 0 评论 -
从两道经典试题谈C/C++中联合体(union)的使用
宋宝华 21cnbao sweek@21cn.com试题一:编写一段程序判断系统中的CPU是Little endian还是Big endian模式?分析:作为一个计算机相关专业的人,我们应该在计算机组成中都学习过什么叫Little endian和Big endian。Little endian和Big endian是CPU存放数据的两种不同顺序。对于整型、长整型等数据类型,Big转载 2009-03-03 14:04:00 · 527 阅读 · 0 评论 -
C/C+语言struct深层探索
1. struct的巨大作用 面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。转载 2009-03-06 17:31:00 · 400 阅读 · 0 评论 -
寻找一个序列中第n大的元素
问题描述:给定一个序列,以及指定这个序列的一个范围,寻找这个范围之内第n大的元素,如果n大于这个范围之内的元素数量那么就返回-1.这是快速排序算法中partiton算法的一个应用,不断的分割序列,如果分割的位置正好是要找的位置,那么返回结果,否则视情况在前半部分和后半部分继续查找,当然这个时候n值也要相应的变化了~~ /**/ /* ***********************转载 2009-03-04 16:08:00 · 818 阅读 · 0 评论 -
用C语言的rand()和srand()产生伪随机数的方法总结
标准库(被包含于中)提供两个帮助生成伪随机数的函数:函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。函数二:void srand(unsigned seed);参数seed是rand()的种子,用来初始化rand()的起始值。可以认为rand()在每次被调用的时候,它会查看:1)转载 2009-09-23 15:15:00 · 689 阅读 · 0 评论