C/C++
文章平均质量分 66
JKay_Wong
一个对计算机有兴趣的菜鸟
展开
-
关于new的一点笔记
http://topic.csdn.net/u/20110707/11/f15d411f-00fc-41a2-8834-d45d42929d73.html?35287必须delete用new创建对象的那个地址。而楼主pA = GetPointA();这样其实已经改变了原来的那个n原创 2011-07-09 13:10:57 · 739 阅读 · 0 评论 -
C++ primer 笔记(一)
在一个博客中看到的 整理了一些自己认为有帮助的 点击打开链接最大收获008:——左值:lvalue,左值可以出现在赋值语句的左边或右边。——右值:rvalue,右值只能出现在赋值的右边,不能出现在赋值语句的左边。——变量是左值,因此可以出现在赋值语句的左边,数原创 2011-10-03 20:24:32 · 1659 阅读 · 0 评论 -
虚函数表
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2011-10-16 20:12:20 · 833 阅读 · 0 评论 -
string中英文字符
在C++中字符串类的string的模板原型是basic_string template class _Elem, class traits = char_traits_Elem>, class _Ax = allocator_Elem>>class basic_str转载 2011-10-16 21:16:29 · 2113 阅读 · 0 评论 -
用Random_buffer产生随机序列
使用random_shuffle()算法随机化序列元素 假设你需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在指定的范围内。但是,使用这个方法至少有两个缺点。首先,做格式化时,结果常常是扭曲的,所以得不到正确的随机数(如某些数的出现频率要高于其它数) 。其次,random()只支持整型数;不能用它来产生随机字符,浮点数,字符串或原创 2012-01-23 18:55:23 · 1360 阅读 · 0 评论 -
获取系统时间方法
下面是我自己写的一个,和下面的第一种是一样的,剩下的先收藏,可能以后有用#include #include using namespace std;int main(){ time_t _gettime; //time_t 是 long类型 struct tm *timeifo; //tm结构体的内容看下面注释 time(&_gettime); //以秒为最小单位获转载 2012-02-25 10:38:41 · 1473 阅读 · 0 评论 -
STL list
概述 STL::list是STL最常用的容器之一,其本质上是一个双向环状链表,链表每一个结点内容如下: template struct __list_node { typedef void* void_pointer; void_pointer next; // 指向下一个节点的指针 void_pointer prev; // 指向前一个节点的指针 T data; //转载 2011-08-13 15:59:08 · 918 阅读 · 0 评论 -
STL vector
1. 概念 vector是一种序列式容器,所谓序列式容器,即其中的元素可以排序,但是并未排序。可以把vector可作为加强版的array,它和array一样,存储空间是一段连续的内存,因此支持随机访问,但是,和array相比,vector支持动态增加数据。vector支持动态增加数据,同时又需要保持空间的连续性从而支持随机访问,因此,在对vector动态增加元素时,如果旧有空间装满,需要申转载 2011-08-13 15:29:33 · 1173 阅读 · 0 评论 -
STL 关联容器
关联容器(Associative Container)与顺序容器(Sequential Container)的本质区别在于:关联容器是通过键(key)存储和读取元素的,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。 关联容器支持通过键来高效地查找和读取元素,两个基本的关联容器是map和set。map的元素是“键-值”对的二元组形式:键用作元素在map中的索引,而值则表示所存储原创 2011-08-13 20:34:54 · 1288 阅读 · 0 评论 -
map的几个常用方法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2012-02-18 14:08:30 · 3889 阅读 · 0 评论 -
序列容器入门代码
通过这个代码可以大致的了解序列容器的一些通用的功能 也可以接触到普通的 iterator 和 reverse_iterator 也用到了模版 是个不错的例子 就是长了点 打了一天的字 又来打代码 真是一种磨练。。。。 #include#include#include#includeusing namespace std;templatevoid print(Container原创 2011-07-11 20:07:54 · 770 阅读 · 0 评论 -
指针动态申请内存的问题
今天腾讯一面,面试官让我做的题目里面,就有一道是使用指针做参数,动态申请内存的题目,我非常肯定地答了错误答案...刚好看到有博客在说这个,马上转载下来在《高质量C/C++编程》一书中,作者曾提出了“如果函数的参数是一个指针,不要指望用该指针去申请动态内存”,而我正犯了这个错误。下面将结合该书对此问题做深入分析,以此记录,避免以后再犯错。 我们将上述问题抽象出来,转载 2013-04-18 22:48:01 · 3706 阅读 · 2 评论 -
C++ const引用详解
(1) 在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用。1 int ival = 1092;2 int &re = ival; //ok3 in原创 2011-10-03 11:51:17 · 1436 阅读 · 0 评论 -
指针自增表达式的一个例子
在一个帖子看到有人问到 *n++ 与 *n+=1 的区别 有个人说的不错 *n++ 是先取n指向的值,然后n++*n = *n + 1; 是把n指向的值加1赋给*n。等价于:(*n)++我自己也写了段代码来验证他的说法 也确实是如此 下面是我的测试原创 2011-07-09 13:03:46 · 959 阅读 · 1 评论 -
关于写时复制(copy-on-write)
大部份的STL在实现string时,都采用COW来保证其高效性。即多个类会共用一个数据缓冲区(buffer),在拷贝构造、赋值等操作时,并不会对buffer进行复制。仅在需要对buffer进行修改,而且此buffer已与别的类共享了,才会开辟空间,将buffe转载 2011-07-09 13:11:53 · 962 阅读 · 0 评论 -
格式化输出与宏定义的一个例子
#include#includeusing namespace std;#define D(A) T<<#A<<endl; Aint main(){ ofstream T("format.out"); D(int i=47;) D(floa原创 2011-07-09 23:35:57 · 1749 阅读 · 0 评论 -
C++面试题
过去收集的些C++面试题,写了答案和分析。如有错误,欢迎指出。收集的试题只有部分是有答案,自己补上了剩下的答案并做了分析。如果不能算原创的话,请指出。1. 以下三条输出语句分别输出什么?[C易]char str1[] = "abc";char str2[]转载 2011-07-09 13:07:35 · 1080 阅读 · 0 评论 -
C++类型转换符
C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to转载 2011-07-09 13:09:19 · 682 阅读 · 0 评论 -
C/C++表达式求值(参考后自己的一些理解)
经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout C++ 不是规定 要弄清这些,需要理解的一原创 2011-07-09 13:07:52 · 1703 阅读 · 0 评论 -
关于一些内存的东东
进程的内存占用都是指的虚拟内存.实际的物理内存占用是很难按进程划分的, 比如两个进程同时使用一个 dll, 它们的某些区段在物理内存中可能是重叠的, 那么这部分内存算哪个进程的物理内存? 而且物理内存完全由操作系统管理了, 如果其中某部分即使曾经读写过, 由于最近没有使用也可能被原创 2011-07-09 13:09:37 · 777 阅读 · 0 评论 -
C++ string类的使用
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行原创 2011-07-09 13:11:14 · 1149 阅读 · 0 评论 -
关于streambuf一点东西
使用插入符和提取符时,一般程序员不知道或不必关心数据在哪里产生和消亡,不管处理的对象是标准I/O、文件、内存还是新创建的类或设备。然而,重要的是与产生和消耗数据的输入输出流部分进行通信为这部分提供统一的接口并隐藏底层实现,标准库把他抽象成一个类,成为streambuf.每个输入输原创 2011-07-09 13:05:58 · 4287 阅读 · 0 评论 -
关于函数返回值的几种情况
在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。 1. 如果返回一个基本类型的变量,比如:int a;a = 5;return a;那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还转载 2011-07-09 13:09:54 · 1143 阅读 · 0 评论 -
C++静态成员
本篇将静态成员详细论述一下,让我们彻底了解这个属于类却不属于对象实例的东西到底是什么样的。 静态成员,它们是属于类的,包括:静态成员变量、静态成员函数。它们只存在于类中,是属于类的,在对象实例内存区是看不到它们的。为什么会这样呢?因为,对于静态成员变量来说,真转载 2011-07-09 13:11:27 · 887 阅读 · 0 评论 -
C++中计算某个代码的运行时间
在论坛中无意发现的好东西,收藏下来先,一定要试试才行class CMyCountTime { private: clock_t m_time;; public: CMy原创 2011-07-22 10:16:42 · 1331 阅读 · 1 评论 -
矩阵类
矩阵的转置 相乘 二维数组的动态申请 matrix.h文件 class Matrix{private: int **pmatrix;//存储矩阵元素 int imaxx,imaxy;//矩阵大小 static int matrixnum;//矩阵对象之和p原创 2011-07-16 20:56:25 · 1062 阅读 · 3 评论 -
mollac/new与free/delete的区别
一不小心就忘了,转来收藏下相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是转载 2013-05-07 01:24:41 · 3475 阅读 · 0 评论