随笔分类 -  C++ 学习笔记

内存分配函数malloc、calloc、realloc的区别(转载)
摘要:原文地址:http://blog.csdn.net/guoxuequan/article/details/8039401三个函数的声明分别是:void* malloc(unsigned size);void*realloc(void* ptr, unsigned newsize);void* calloc(size_t nelem, size_t elsize);都在stdlib.h函数库内,它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL.malloc用于申请一段新的地址,参数size为需要内存空间的长度,如:char* p;p=(char*)malloc(20);calloc 阅读全文

posted @ 2013-03-05 14:51 cosmo89929 阅读(178) 评论(0) 推荐(0)

new 和 malloc 的区别 (转载)
摘要:原文地址:http://blog.csdn.net/yanjiaye520/article/details/60483461、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4.new可以看成两个动作:1。分配内存(相当于malloc)2。引发构造函数。new 是个操作符,和什么" 阅读全文

posted @ 2013-03-05 14:43 cosmo89929 阅读(156) 评论(0) 推荐(0)

动态内存分配(转载)
摘要:原文链接:http://blog.csdn.net/yanjiaye520/article/details/60483461. 堆内存分配 :C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。堆的概念:通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配;有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法 阅读全文

posted @ 2013-03-05 14:39 cosmo89929 阅读(201) 评论(0) 推荐(0)

数据结构 单链表 (C++)(转载)
摘要:线性表包含 数据域和指针域 其中,data存储数据本身的值,next存储后继元素的地址 下面的图表示的是一个数据节点单链表的结构示意图(包括空的单链表):单链表的节点类:template<class T>class Node{ public: T data;//数据 Node<T> *next;//next指针 Node() { this->next=NULL;//构造空的节点 } Node(T data,Node<T> *next=NULL)//构造一个节点 { ... 阅读全文

posted @ 2013-03-04 12:36 cosmo89929 阅读(353) 评论(0) 推荐(0)

二维数组和二级指针的传递问题 (转载)
摘要:先看个自己的例子吧:Write an algorithm such that if an element in an M*N matrix is 0, its entire row and column are set to 0;//本作目的在于熟悉多维数组的传递# include<iostream># define ROW_N 3# define LINE_M 4using namespace std;//传递矩阵时候要说明维度……void print_matrix(int matrix_ptr[ROW_N][LINE_M]){ for(int i=0;i<ROW_N;i+ 阅读全文

posted @ 2013-02-27 09:06 cosmo89929 阅读(564) 评论(0) 推荐(0)

STL 之 构建tree (转载)
摘要:原文地址:http://www.cnblogs.com/gy725/archive/2011/09/28/2194808.html前几天觉得STL中没有树和图真是一种莫大的遗憾啊,但是在网上搜了搜,发现其实可以用容器很简单的构造树。还是废话少说上代码:struct TreeNode{ DataType data; // DataType define int vector<TreeNode> children;}就这么简单就可以构造树的节点。然后我们可以简单的造一颗树那么我们可以写个CreateTree来创建void CreateTree(vector<TreeNode... 阅读全文

posted @ 2013-02-26 13:18 cosmo89929 阅读(3069) 评论(0) 推荐(0)

STL 之 priority queue 使用 (转载)
摘要:原文链接:http://blog.csdn.net/dooder_daodao/article/details/5761550优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~百度百科上这样描述的: 优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素 优先队列的类定义 #include <assert.h> #include <iostream.h> $include <stdlib.h> 阅读全文

posted @ 2013-02-26 13:12 cosmo89929 阅读(364) 评论(0) 推荐(0)

STL 之 vector 的使用 (转载)
摘要:STL之vector的使用第一部分 使用入门vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性。而且vector是STL推荐使用的默认容器,除非你知道你有特殊需要,使用vector不能满足你的需求,例如需要容器在 head和tail高效的插入和删除,或者在任何位置高效的删除和插入操作,那么你可能使用deque或者list更加合适。vector是连续内存容器,换句话说,标准要求所有标准库实现的时候,vector中的元素的内存必须是连续的。所以对于插入和删除的时间复杂度是很高的,因为 阅读全文

posted @ 2013-02-26 04:22 cosmo89929 阅读(281) 评论(0) 推荐(0)

十一、从头到尾彻底解析Hash 表算法 (转载)
摘要:十一、从头到尾彻底解析Hash 表算法作者:July、wuliming、pkuoliver出处:http://blog.csdn.net/v_JULY_v。说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。------------------------------------第一部分:Top K 算法详解问题描述百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万 阅读全文

posted @ 2013-02-23 17:21 cosmo89929 阅读(226) 评论(0) 推荐(0)

关于 using namespace * (转载)
摘要:原文链接:http://www.cnblogs.com/uniqueliu/archive/2011/07/10/2102238.html对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std。这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义。其作用就在于避免发生重命名的问题。 1. 关于namespace C++引入了命名空间namespace主要解决了多个程序员在编写同一个项目中可能出现的函数等重名的现象。解决方法就是加上自己的命名空间。比如下面的例子:?1234 阅读全文

posted @ 2013-01-06 04:31 cosmo89929 阅读(184) 评论(0) 推荐(0)

STL 介绍 (转载)
摘要:原文链接:http://www.cnblogs.com/dc10101/archive/2008/05/21/1203769.htmlContent简介容器迭代器算法简介首先为什么不叫标准库,而叫标准模板库呢?原因在于它突出模板(即泛型)的概念。stl由三部分组成:容器,迭代器,算法。下面分别做一个简略介绍:stl的哲学是将数据和操作分离。数据由容器管理,操作由可定制的算法定义,迭代器充当了两者之间的的粘合剂。(*) 容器序列式容器(sequence container): vector, deque, list元素的位置取决于插入的时机关联式容器(associative container) 阅读全文

posted @ 2013-01-06 04:15 cosmo89929 阅读(283) 评论(0) 推荐(0)

c++ try_catch throw
摘要:原文地址:http://www.cnblogs.com/xd502djj/archive/2010/09/28/1837396.html使用throw抛出异常本人节选自《21天学通C++》一书 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw 表达式; 如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的 阅读全文

posted @ 2013-01-03 13:25 cosmo89929 阅读(5354) 评论(0) 推荐(0)

Linked List 的sample codes
摘要:#include<iostream>using namespace std;template<class T>class LinearList{ public: LinearList(int MaxListSize = 10); ~LinearList() {delete [] element;} bool IsEmpty() const {return length == 0;} int Length() const {return length;} bool Find(int k, T& x) const; int Search(const T& x 阅读全文

posted @ 2013-01-03 12:11 cosmo89929 阅读(175) 评论(0) 推荐(0)

C++ 友元--friend (转载)
摘要:原文链接:http://www.cnblogs.com/CBDoctor/archive/2012/02/04/2337733.html采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。友元分为友元函数和友 阅读全文

posted @ 2013-01-03 10:23 cosmo89929 阅读(174) 评论(0) 推荐(0)

C++ 中引用(&)的用法和应用实例 (转载)
摘要:原文链接:http://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人 阅读全文

posted @ 2013-01-03 01:49 cosmo89929 阅读(321) 评论(0) 推荐(0)

C++ 类模板
摘要:下面给出了关于类成员的初始化,指向类成员的指针,const用法和引用用法的模板。#include<iostream> //不是iostream.husing namespace std;class BOX{ public: BOX (int h=10, int w=20, int l=30);//带参数的构造函数,并指定h,w,l的默认值 int volume(); void outputoutput(); void const_outputoutput() const; //const 要放在最后 void get_time(); ~BOX() // D... 阅读全文

posted @ 2013-01-02 12:44 cosmo89929 阅读(238) 评论(0) 推荐(0)

ASCII 表格
摘要:八进制十六进制十进制字符八进制十六进制十进制字符00000nul1004064@01011soh1014165A02022stx1024266B03033etx1034367C04044eot1044468D05055enq1054569E06066ack1064670F07077bel1074771G10088bs1104872H11099ht1114973I120a10nl1124a74J130b11vt1134b75K140c12ff1144c76L150d13er1154d77M160e14so1164e78N170f15si1174f79O201016dle1205080P21111 阅读全文

posted @ 2013-01-01 13:49 cosmo89929 阅读(801) 评论(0) 推荐(0)

C/C++基本数据类型 (转载)
摘要:C/C++基本数据类型学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。 ANSI C/C++基本数据类型:TypeSize数值范围无值型void0 byte无值域布尔型bool1 bytetruefalse有符号短整型short [int] /signed short [int]2 byte-32768~32767无符号短整型unsigned short [int]2 byte0~6553 阅读全文

posted @ 2013-01-01 13:43 cosmo89929 阅读(214) 评论(0) 推荐(0)

C++ 指针
摘要:这是一篇我所见过的关于指针的最好的入门级文章,它可使初学者在很短的时间内掌握复杂的指针操作。虽然,现在的Java、C#等语言已经取消了指针,但作为一个C++程序员,指针的直接操作内存,在数据操作方面有着速度快,节约内存等优点,仍是很多C++程序员的最爱。指针就像是一把良剑,就看你怎么去应用它! 什么是指针? 其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。这是一个非常重要的概念,有很多程序和算法都是围绕指针而设计的,如链表。开始学习 如何定义一个指针呢?就像你定义一个其它变量一样,只不过你要在指针名字前加.. 阅读全文

posted @ 2013-01-01 10:17 cosmo89929 阅读(274) 评论(1) 推荐(0)

C++ string 类详解
摘要:之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件。如下: #include//注意这里不是string.h string.h是C字符串头文件1.声明一个C++字符串声明一个字符串变量很简单: string Str;这样我们就声 阅读全文

posted @ 2012-12-22 08:53 cosmo89929 阅读(301) 评论(0) 推荐(0)

导航