C++ 知识点
xiucaijiang
这个作者很懒,什么都没留下…
展开
-
C++ primer 学习计划
今天已经看完了本书的前4章,但前4章的习题并没有认真研究。计划在最短的时间内把这些习题做完,也算是对前几章的一个复习,把改做笔记的内容写到博客上。今后仍要继续学习这本书。计划一周看3章,一个多月的时间看完此书,进而学习数据结构与算法。 学习前4章的感受,本书对问题讲的比较深入,多数为细节问题,需要记笔记,以免遗忘。以后多看看笔记。原创 2009-10-31 16:08:00 · 881 阅读 · 1 评论 -
EOF cin
<br />输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get() 就会检测输入缓冲区中是否有了可读的数据。cin.get() 还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。 <br /> <br /> 阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下原创 2011-05-07 22:22:00 · 1081 阅读 · 0 评论 -
浅谈C语言中如何取随机数(转)
1. 基本函数在C语言中取随机数所需要的函数是:int rand(void);void srand (unsigned int n);rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件:#include原创 2011-08-03 09:30:49 · 834 阅读 · 0 评论 -
快速排序 我自己写的
#include #include #include #include #include using namespace std;stack st;int partition(vector& arr,int begin,int end){ int t原创 2011-09-07 20:52:36 · 650 阅读 · 0 评论 -
快速排序
//递归调用版void QuickSort(int data[], int lo, int hi){ if (lo<hi) { int k = partition(data, lo, hi); QuickSort(data, lo原创 2011-09-07 20:25:36 · 554 阅读 · 0 评论 -
堆和栈的区别 (转贴)
堆和栈的区别 (转贴)http://www.cppblog.com/oosky/archive/2006/01/21/2958.html 堆 栈 静态区 代码区 顺序http://zqwt.012.blog.163.com/blog/static/12044684原创 2011-04-16 16:49:00 · 532 阅读 · 0 评论 -
常考的开发笔试题 c++里有关指针的内容中,const的位置对指针含义的影响?
C++中const总结 一:对于基本声明 1.const int r=100; //标准const变量声明加初始化,因为默认内部连接所以必须被初始化,其作用域为此文件,编译器经过类型检查后直接用100在编译时替换. 2.extend const int r原创 2011-09-16 00:07:48 · 1182 阅读 · 0 评论 -
类string的构造函数、拷贝构造函数和析构函数
引用http://www.cppblog.com/life02/archive/2011/03/07/96085.html 在这个帖子的基础上稍微添加修改了点内容。String 类的原型如下class String{ public:原创 2011-09-19 22:02:24 · 640 阅读 · 0 评论 -
生产者消费者问题Semaphore
http://www.cnblogs.com/steady/archive/2011/04/02/2003168.html/* productandconsumer. cpp */#includewindows.h>#include stdio.h>#原创 2011-08-25 13:11:39 · 881 阅读 · 0 评论 -
C++实现一个不能继承的类
http://www.examda.com/ncre2/cpp/jichu/20090708/075336151.htmlC#和Java都提供了一种机制让一个类不能被继承,如C#中的sealed关键字和Java的final关键字,然而C++程序员就没这么好命了。不过C++原创 2011-08-27 13:05:57 · 595 阅读 · 0 评论 -
6.6 段页式存储管理
6.6 段页式存储管理6.6.1 段页式存储管理的基本思想 引入段页式管理的目的 为了获得分段在逻辑上的优点和分页在管理存储空间方面的优点。 引入段页式管理的目的 (1)用分段方法来分配和管理虚拟存储器。把作业的地址空间分成若干段,而每一段有自己的段名,把每原创 2011-09-24 23:05:49 · 11027 阅读 · 2 评论 -
排序算法 稳定性
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住原创 2011-10-18 00:30:22 · 1372 阅读 · 1 评论 -
禁止产生栈对象;禁止产生堆对象
禁止产生栈对象;禁止产生堆对象禁止产生栈对象;禁止产生堆对象禁止产生堆对象上面已经提到,你决定禁止产生某种类型的堆对象,这时你可以自己创建一个资源封装类,该类对象只能在栈中产生,这样就能在异常的情况下自动释放封装的资源。转载 2011-10-11 09:57:45 · 1152 阅读 · 0 评论 -
*.mesh convert to *.3ds file
1. ogre 生成mesh的时候,ManualObject 用mHillStone->begin("", Ogre::RenderOperation::OT_TRIANGLE_LIST);用OT_TRIANGLE_TRIPE可能不支持后面操作多两个点 mHillStone->triangle(2*i - 2, 2*i - 1, 2*i);mHillStone->triangle(2*i -原创 2011-12-10 13:44:54 · 2958 阅读 · 1 评论 -
stl string 分解 split
#include "stdafx.h"#include #include using namespace std;int split(const string& str, vector& ret_, string sep) { if (str.empty()) { return 0; } string tmp; string::size_type pos_be原创 2012-11-05 15:38:01 · 2214 阅读 · 0 评论 -
path 文件名全路径输出 遍历文件夹
path 文件名全路径输出 遍历文件夹#include //project->settings->general->Use MFC in a shared DLL#include "windows.h"#include #include #include #include using namespace std;void FindAllFile(string _path, ve原创 2012-11-05 16:00:09 · 1440 阅读 · 0 评论 -
构造函数的成员初始化参数表
<br /><br />构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:<br />class CExample {<br /> public:<br /> int a;<br /> float b;<br /> //构造函数初始化列表<br /> CExample(): a(0),b(8.8)<br /> {}<br /> //构造函数内部赋值<br /> CExample()<br原创 2011-04-26 21:25:00 · 10479 阅读 · 0 评论 -
腾讯 百度 面试题
腾讯:tryfinally百度:int array[] = {0,1,2,3,4,5,6,7,8,9...};随机输出array中的值,并且不能重复完整输出一遍要求空间复杂度和时间复杂度最小原创 2011-04-26 21:29:00 · 1258 阅读 · 0 评论 -
当前工作目录与当前执行目录
定义: 当前工作目录——进行某项操作的目的目录,会随着OpenFileDialog、SaveFileDialog等对象所确定的目录而改变。当前执行目录——该进程从中启动的目录,即文件自身所在目录。工作目录与执行目录可以不同,例如一个人住在北京,但他的工作地点不一定在北京,可能在天津。方法:1、 获取和设置当前工作目录a) System.IO.Dir原创 2011-06-16 10:23:00 · 6938 阅读 · 0 评论 -
第四章 数组和指针
C++应尽量使用vector和迭代器,只有在强调速度才使用数组和指针。非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。现在C++采用string类型取代C风格字符串。取地址操作只能用于左值,因为只有当变量用作左值时,才能取其地址。string* ps1,ps2;实际上只把ps1定义为指针,ps2并非指针,所以尽量写为:string *p原创 2010-03-05 09:33:00 · 527 阅读 · 0 评论 -
他人的读书笔记
第一章 快速入门1. 每个C++程序都包含一个或多个函数,而且必须有一个命名为main。函数由执行函数功能的语句序列组成;2. main函数是唯一被操作系统显式调用的函数;3. main函数的形参个数是有限的4. 函数体是函数定义的最后部分,是以花括号开始并以花括号结束的语句块;5. 注释不会增加可执行程序的大小,编译原创 2010-03-11 09:24:00 · 653 阅读 · 0 评论 -
Win32基本概念及程序基本框架
Win32基本概念及程序基本框架 1.1. 学习目的及方法我们这里讲的Win32编程指的就是用使用C语言和原始的API编写Windows程序,这种方法能提供给您最佳的性能、最强大的功能和在发掘Windows特性方面最大的灵活性。可执行文件相对较小且运行时不要求外部链接库(自然,Windows DLL自身除外)。最重要的是,不管您最终以什么方式开发Windows应用程序,熟悉API会使您对Win原创 2010-04-03 15:03:00 · 1764 阅读 · 0 评论 -
include 不要包含.pp 最好只包含.h
交谈中请勿轻信汇款、中奖信息,勿轻易拨打陌生电话。 月下独酌 11:21:57问个问题 “已经在.obj中定义”是什么问题?月下独酌 11:22:23我已经写了:宏#define MCResThird#ifndef MCResScnd#include"MCResScnd.cpp"#endif11:23:11您的好友不在线或隐身,因此您不能发送窗口抖动。王风 11:23:50尽量不要inc原创 2010-04-23 11:45:00 · 703 阅读 · 0 评论 -
变量被重复定义的问题
问:变量被重复定义的问题,敬请指教:变量被重复定义的问题,敬请指教:在Fat32.h中定义: #ifndef _FAT32_H#define _FAT32_Hstruct FileInfoStruct FileInfo; //文件信息结构体实体struct FAT32_Init_Arg Init_Arg; //初始化参原创 2010-04-23 11:07:00 · 855 阅读 · 0 评论 -
数组作为函数参数 自动转换为同类型指针
<br />高质量C++编程指南中指出当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针,这句话针对一维数组是正确的(目前个人认为是正确的),但是对于多维数组,这显然不完全正确。C语言之所以把数组形参当作指针是出于效率考虑,如果把一个数组全部拷贝这样势必带来性能上的损失。所以目前无论你在函数声明中像'void func1(char a[])'这样写,还是像'void func1(char *a)',编译器都会把它看成后者的形式。<br />所以对于一个常考的笔试题目:<br />Void f(ch原创 2010-09-13 14:53:00 · 1136 阅读 · 0 评论 -
Ogre实现的Singleton——设计模式
Ogre实现的Singleton——设计模式Singleton就是保证一个类只有一个实例,在Ogre里面有很多Singleton的例子,几乎所有的Manager都是Singleton的实例。比较下Gof里面的Singleton的实现和loki中的Singleton的实现,Ogre的Singleton算是比较简单的。Gof中实现一般是把类的构造函数给Private了然后再加上static的变量和函数实现的。下面来具体看一下Ogre中的Singleton#ifndef _SINGLETON_H__#defi原创 2010-11-30 15:39:00 · 1604 阅读 · 0 评论 -
Ogre中的Smart Pointers——SharedPtr
<br />看一下Ogre里面的ShagedPtr,其实就是一个Smart Pointers。下面的代码是删去了原有注释的。现不谈里面的MUTEX。#ifndef __SharedPtr_H__#define __SharedPtr_H__#include "OgrePrerequisites.h"namespace Ogre { template<class T> class SharedPtr { protected: T* pRep;原创 2010-11-30 15:44:00 · 1419 阅读 · 0 评论 -
如何加快C++代码的编译速度的几种技巧
<br />http://www.cnblogs.com/vacuum/archive/2010/03/08/1681085.html<br />C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速度,却只有低调的份了。比如我现在工作的源代码,哪怕使用Incredibuild调动近百台机子,一个完整的build也需要四个小时,恐怖!!!虽然平时开发一般不需要在本地做完整的build,但编译几个相关的工程就够你等上好一段时间的了(老外管这个叫monkey around,相当形象)。想想若干年在一台单原创 2010-10-28 09:53:00 · 557 阅读 · 0 评论 -
C++ void指针和NULL指针
<br /><br />我们将从指针的语法和使用并结合例子来讨论他们的区别。<br /> <br />Void 指针:<br /><br /> Cpp代码 void * pointer_variable; <br /> void这是是作为一个关键字来使用。<br />参考指针的定义和使用,我们知道所定义指针的数据类型同指针所指的数据类型是一致的。所分配给指针的地址也必须跟指针类型一样。<br />例如:Cpp代码 int i; float f; int* exf; float* test; the原创 2010-12-28 16:31:00 · 1719 阅读 · 1 评论 -
typedef用法小结
摘要 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。<br /><br />第一、四个用途<br />用途一:<br />定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:<br />char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,原创 2010-11-04 11:15:00 · 537 阅读 · 0 评论 -
DLL 重定位
<br />DLL 重定位在32位代码中,涉及到直接寻址的指令都是需要重定位的(而在DOS的16位代码中,只有涉及到段操作的指令才是需要重定位的,对此有兴趣的读者可以参考 相关的资料),对于操作系统来说,其任务就是在对可执行程序透明的情况下完成重定位操作,在现实中,重定位信息是在编译的时候由编译器生成并被保留 在可执行文件中的,在程序被执行前由操作系统根据重定位信息修正代码,这样在开发程序的时候就不用考虑重定位问题了。 <br /><br />重定位信息在DLL文件中被存放在重定位表中 <br />原创 2010-11-06 10:08:00 · 4136 阅读 · 1 评论 -
动态加载DLL的方法与注意的问题
<br /> 加载DLL的方法主要有两种:一种是隐式链接,另外一种是动态加载。 隐式链接会把DLL中所有标志为_declspec(dllexport)的函数都加载,如果有多个DLL加载时,可能会影响到程序执行的效率。而用动态加载DLL的方式则可以根据需要去加载用到的函数。 动态加载DLL的方法: 1.把生成的.DLL文件复制到测试工程DLLTest目录下。这里假设该.DLL文件为add.dll,主要代码是:_declspec(dllexport) int add(int x, int y)原创 2010-11-06 10:09:00 · 1669 阅读 · 0 评论 -
std::tr1::function
使用std::tr1::function对象代替虑函数在 C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。1. 指向全局函数或静态成员函数时 因为在本质上讲全局函数和静态成员函数没有区别,使用方法上除了静态成员函数在引用时要在前面加域作用符className::原创 2010-11-10 11:17:00 · 9400 阅读 · 0 评论 -
export template
呃,请直接忽略export的所有段落和讨论。还没几个编译器支持的东西。同意。可以完全不用追究这些基本不用的东西。为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准C++新增加的关键字export(导出/出口/输出)。例如:extern int n;extern struct Point p;extern class A a;export templa原创 2011-04-18 21:05:00 · 4413 阅读 · 3 评论 -
opencv 更改某path下图片大小
#include //project->settings->general->Use MFC in a shared DLL#include "windows.h"#include "cv.h"#include "cxcore.h"#include "highgui.h"#include "cvaux.h"#include "string"#include "vector"#inc原创 2012-11-05 15:47:00 · 745 阅读 · 0 评论