C/C++ fundamentals
brilliantyoho
这个作者很懒,什么都没留下…
展开
-
stringstream的清空
代码示例int main() { int size = 100; stringstream strStream; for (int i = 0; i size; ++i) { strStream i; string numStr; strStream >> numStr;转载 2014-12-03 14:14:47 · 527 阅读 · 0 评论 -
常用排序算法总结
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。当待排序记录的关键字都不相同时,排序结果是惟一的,否则排序结果不惟一。在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。要注意的是,排序算法的稳定性是针对所有输入实例而言转载 2014-09-30 15:08:10 · 92 阅读 · 0 评论 -
C++虚函数与纯虚函数用法与区别
1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。 2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(ba转载 2014-09-29 17:10:57 · 348 阅读 · 0 评论 -
C++中struct和class的区别
一、 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!! 最本质的一个区别就是默认的访问控制,体现在两个方转载 2014-09-29 16:45:09 · 355 阅读 · 0 评论 -
Static、Extern、Volatile及Const关键字总结
Static、Extern、Volatile及Const关键字总结关键字static 关键字Const有什么作用?static在C中主要转载 2014-09-29 17:25:51 · 400 阅读 · 0 评论 -
C++ sizeof 使用规则及陷阱分析
1、什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value o转载 2014-09-29 14:40:15 · 336 阅读 · 0 评论 -
C和C++中存储区域详解(栈、堆、全局...)
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放转载 2014-09-29 11:50:46 · 391 阅读 · 0 评论 -
关于C++中的大小端、位段(惑位域)和内存对齐
听到好几个朋友说到去一些公司做面试,总是遇到关于大小端、位段(或者叫位域)和内存对齐的考题,然后就不知所措了。虽然我认为很多开发根本就用不到这个,但是我认为很有必要学习理解这些知识点,因为它可以让你更了解C++的,了解程序在内存的运行情况,也能加深对计算机系统的理解。 声明:由于本文的代码会受到计算机环境的影响,故在此说明本篇博文中的程序的运行环境。转载 2014-09-29 15:50:02 · 850 阅读 · 0 评论 -
C++中各种类型的成员变量的初始化方法
C++类中各种不同类型成员根据是否static 、是否const类型的初始化方法不尽相同,写代码时经常搞乱,网上搜了一下资料,全部总结一下。一、例子[cpp] view plaincopy-----------------Test.h---------------------------- #pragma once cla转载 2014-09-29 11:23:07 · 586 阅读 · 0 评论 -
C++ 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使转载 2014-09-29 16:46:58 · 285 阅读 · 0 评论 -
wxStringData::Free() link error
問題描述有時我們在 Visual C++ 中編譯 wxWigets 的程式時,會出現類似下面的錯誤訊息,導致連結失敗:1>BoardManager.obj : error LNK2019: unresolved external symbol "public: void __thiscall wxStringData::Free(void)" (?Free@wxStringData@@转载 2014-07-25 14:30:25 · 433 阅读 · 0 评论 -
error C4335: Mac file format detected: please convert the source file to either DOS or UNIX format
When you come across this compiling error in Visual Studio, you could re-save the source file with “Advanced Save Options” setting. To address this issue, switch to “File“->”Advanced Save Options“转载 2014-07-25 14:39:51 · 1859 阅读 · 0 评论 -
shell排序
shell排序算法:shell排序算法的时间复杂度为o(n2),本文中的间隔每次除以2,若修改时间间隔,那么就可以得到更加优化的时间代价shell排序算法基于插入排序的两个性质:1、小序列性质:插入排序在小序列时的排序时间较短.2、有序性质:插入序列在有序序列中的时间消耗较少,接近于O(n).因此可以将较长的序列分割成一些较小的序列进行插入排序,然后再将这些较小的序列合成较大的转载 2014-10-11 11:15:48 · 328 阅读 · 0 评论 -
判断两条链表是否相交&单链表是否有环
一、判断两条链表是否相交http://hi.baidu.com/gmfoqlmthriprur/item/fb96f7c8ca4db72fef46657f相交的话,一定是Y型或者V型的。所以只需要判断两个链表最后一个节点就可以了。问题描述:给定两个单向列表的头指针,比如h1、h2,判断这两个列表是否相关。注,这里只讨论这两个列表均不带环的情况转载 2014-09-29 17:43:01 · 509 阅读 · 0 评论 -
并查集(Union-Find)算法介绍
本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使用这个方法,而不是别的什么方法。我觉得这个可能更加有意义一些,相比于记下一些结论。转载 2014-12-15 18:57:24 · 376 阅读 · 0 评论 -
最大流算法--Ford-Fulkerson方法及其多种实现
网络流在上一章中我们讨论的主题是图中顶点之间的最短路径,例如公路地图上两地点之间的最短路径,所以我们将公路地图抽象为有向带权图。本章我们将对基于有向带权图的模型做进一步扩展。很多系统中涉及流量问题,例如公路系统中车流量,网络中的数据信息流,供油管道的油流量等。我们可以将有向图进一步理解为“流网络”(flow network),并利用这样的抽象模型求解有关流量的问题。转载 2014-11-24 15:31:05 · 1429 阅读 · 0 评论 -
关于C++ const 的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。转载 2014-11-24 11:48:24 · 292 阅读 · 0 评论 -
深度优先搜索(DFS)
1.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。你可以跳过第二节先看第三节,:)2.深度优先搜索VS广度优先搜索2.1演示深度优先搜索的过程还是引用上篇文章的转载 2014-10-20 18:35:21 · 518 阅读 · 0 评论 -
广度/宽度优先搜索(BFS)
1.前言广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。 一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想成立的。算法导论里边会给出不少严格的证明,我想尽量写得通俗一点,因此采用一些转载 2014-10-20 18:24:15 · 569 阅读 · 0 评论 -
特殊数据类型成员变量的初始化
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a. 常量型成员变量b. 引用型成员变量c. 静态成员变量d. 整型静态常量成员变量e. 非整型静态常量成员变量 对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始转载 2014-11-18 17:33:36 · 344 阅读 · 0 评论 -
C++运算符优先级
优先级操作符描述例子结合性1()[]->.::++--调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;转载 2014-09-30 10:34:28 · 310 阅读 · 0 评论 -
学好C++必须要注意的十八个问题
学好C++必须要注意的十八个问题:一、#include “filename.h”和#i nclude 的区别#include “filename.h”是指编译器将从当前工作目录上开始查找此文件#include 是指编译器将从标准库目录中开始查找此文件二、头文件的作用加强安全检测通过头文件可能方便地调用库功能,而不必关心其实现方式三、* , &修饰符的位置对于*和&修转载 2014-09-29 17:39:58 · 300 阅读 · 0 评论 -
快速排序
快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序是一种不稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采转载 2014-10-11 12:02:16 · 331 阅读 · 0 评论 -
C++封装、继承、多态
C++封装继承多态总结面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装转载 2014-09-29 18:07:52 · 490 阅读 · 0 评论 -
归并排序
/* 归并排序的基本操作是 将两个或两个以上的记录有序序列归并为一个有序序列。 最简单的情况是,只含一个记录的序列显然是个有序序列, 经过"逐趟归并"使整个序列中的有序子序列的长度逐趟增大, 直至整个记录序列为有序序列止。 2-路归并排序则是归并排序中的一种最简单的情况, 它的基本操作是将两个相邻的有序子序列"归并"为一个有序序列, 如右侧所示。这个操作对顺序表转载 2014-10-11 11:02:40 · 366 阅读 · 0 评论 -
fopen 打开模式总结
r 只读 读模式--打开文件,从文件头开始读。r+ 只读 读写模式--打开文件,从文件头开始读写。w 只写 写模式--打开文件,从文件头开始读。如果该文件已经存在,将删除所有文件已有内容。如果该文 件不存在,函数将创建这个文件。w+ 只写 写模式--打开文件,从文件头开始读写。如果该文件已经存在,将删除所有文件已有内转载 2013-12-05 17:49:29 · 434 阅读 · 0 评论 -
栈(Stack)和堆(Heap)的区别
一、关于栈(Stack)和堆(Heap)的问题:栈(Stack):由操作系统分配和回收,函数调用的参数及其内部局部变量就是从这分配。其特点是:分配容量有限且连续比较固定,但不容易引起内存泄露。堆(Heap):易称动态分配,是由程序员自己分配和回收的,如程序员用new, malloc分配内存,用delete, free来释放内存。若在程序结束时,未回收则由操作系统来完成回收工作。其特点是转载 2013-12-23 12:59:04 · 1092 阅读 · 0 评论 -
Maximum size of malloc()
How can I know the maximum size of the heap I can occupy by malloc(). I use MS Visual Studio 2010?There are operating system-dependent ways of finding out how much virtual memory is availa转载 2013-12-23 13:03:40 · 495 阅读 · 0 评论 -
【C/C++】计时函数比较
目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录. 方法1,time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordin转载 2014-04-03 10:10:57 · 355 阅读 · 0 评论 -
Error C2664: cannot convert from non const T* to const T*&
The following code generates an incorrect compile error:int* p;int const* & r = p; // reference to a pointer to const interror C2440: 'initializing' : cannot convert from 'int *' to 'const i转载 2014-04-30 17:31:55 · 1300 阅读 · 0 评论 -
Why am I getting an error converting a Foo** → Foo const**?
Because converting Foo** → Foo const** would be invalid and dangerous.C++ allows the (safe) conversion Foo* → Foo const*, but gives an error if you try to implicitly convert Foo** → Foo const**.转载 2014-05-19 13:26:24 · 460 阅读 · 0 评论 -
Type conversion - unsigned to signed int/char
Q:I tried the to execute the below program:#include int main() { signed char a = -5; unsigned char b = -5; int c = -5; unsigned int d = -5; if (a == b) printf("\r\n转载 2014-02-17 12:42:27 · 660 阅读 · 0 评论 -
C++矩阵处理工具——Eigen
最近和一些朋友讨论到了C++中数学工具的问题,以前总是很2地自己写矩阵运算,或者有时候在matlab里计算了一些数据再往C程序里倒,唉~想想那些年,我们白写的代码啊……人家早已封装好了!首先推荐几个可以在C++中调用的数学平台:eigen、bias、lapack、svd、CMatrix,本文着重eigen做以讲解,希望对各位有所帮助。下面是本文主线,主要围绕下面几点进行讲解:***转载 2013-12-27 18:18:48 · 749 阅读 · 0 评论 -
VS2008 Debug与Release的本质区别
如何设置:工具栏“生成”→“配置管理器”→“活动解决方案配置” 对于VS2008的初次使用者来说,常会遇到的编译问题时,Debug版本运行正常,但在Release版本则不稳定或无法运行。以下是对Debug版本与Release版本本质区别的分析:Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种转载 2013-12-20 14:51:33 · 362 阅读 · 0 评论 -
C++的cout高阶格式化操作
这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步而言,您还可以在、上使用这些格式化操作,从而代替sprintf和fprintf函数。为方便描述,下文仅以cout为例进行介绍。转载 2013-12-30 10:21:27 · 627 阅读 · 0 评论 -
如何在VS2008中使用CLAPACK
关于CLAPACK的使用网上的资料并不多。主要就是官方网站上的安装说明,以 及LAPACK官方论坛上的一些资料。然而,国外一般科研使用的平台都是UNIX或LINUX, 所以对于windows上使用CLAPACK的相关介绍就很少。幸运的是,官方提供了CLAPACK的windows版本,而且还有专门的 VisualStudio工程包。所以,对于广大VS用户来说可谓非常之方便。然而,即使如此,很转载 2013-12-03 09:20:24 · 647 阅读 · 0 评论 -
The solutions to the error such as "PRJ0008" or "C2471" or "C1083" or "D8022" or "LNK1103"
Title: You may receive a "PRJ0008" or "C2471" or "C1083" or "D8022" or "LNK1103" or similar error message when you try to build a solution in Visual C++Symptoms:D8022 : Cannot open 'RSP00000转载 2013-12-03 09:55:43 · 1403 阅读 · 0 评论 -
Convert std::string to const char* or char*
Q:How can I convert an std::string to a char* or a const char*?A:If you just want to pass a std::string to a function that needs const char* you can usestd::string str;con转载 2014-03-07 18:37:20 · 1494 阅读 · 0 评论 -
Problem calling std::max: Illegal token on right side of ::
Q:I compiled my bison-generated files in Visual Studio and got these errors:...\position.hh(83): error C2589: '(' : illegal token on right side of '::'...\position.hh(83): error C2059: s转载 2014-03-20 11:22:40 · 843 阅读 · 0 评论 -
MATLAB调用C/C++函数的方法
通过MATLAB将C/C++函数编译成MEX函数,在MATLAB中就可以调用了。1,首先装编译器Matlab里键入mex -setup,选择你要编译C++的编译器2,写C++函数函数的形式必须是void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])nlhs:输出参数个数转载 2014-02-12 11:16:17 · 410 阅读 · 0 评论