C++
AIHGF
完美一切 一切完美
展开
-
Caffe - Clion 调试 C++ 源码简单使用
Clion 调试 Caffe C++ 源码环境:Ubuntu14.04,Caffe,Clion2017.21. Clion - Ubuntu 安装官网下载 Clion 的 .tar.gz 压缩包 Clion-Linux解压压缩包到当前文件夹tar -zxvf Clion-2017.2.3.tar.gz运行安装脚本cd Clion-2017.2.3./bin/cli...原创 2017-11-22 15:33:56 · 9888 阅读 · 0 评论 -
C++开源矩阵计算工具——Eigen的简单用法
转自:http://blog.csdn.net/houjixin/article/details/8490941Eigen非常方便矩阵操作,当然它的功能不止如此,由于本人只用到了它的矩阵相关操作,所以这里只给出了它的一些矩阵相关的简单用法,以方便快速入门。矩阵操作在算法研究过程中,非常重要,例如在图像处理中二维高斯拟合求取光斑中心时使用Eigen提供的矩阵算法,差不多十来行代码即可实现,具体可转载 2015-09-24 16:25:21 · 1515 阅读 · 0 评论 -
C++ 格式控制符setiosflags
setiosflags(ios::fixed)是用定点方式表示实数。 使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。如果setprecision(n)与setiosnags(ios::scientifi原创 2015-09-24 17:54:35 · 1328 阅读 · 0 评论 -
Visual Studio2010解决无法启动***.lib的问题
错误信息如下:无法启动程序xxxx/***.lib,指定的文件的格式无法识别或为不支持的二进制。解决方法:该文件对应的项目不是启动项目,右键设为启动项目 即可。原创 2015-09-23 16:59:30 · 5305 阅读 · 2 评论 -
Boost库编译后命名方式
转自:http://www.cnblogs.com/dementia/archive/2009/04/10/1433217.htmlBoost官网的《Geting Started On Windows》(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost库的命名,摘录如下转载 2015-09-23 17:24:20 · 926 阅读 · 0 评论 -
C++ 多线程
多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。在一般情况下,有两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理处理的是程序的并发执行。基于线程的多任务处理的是同一程序的片段的并发执行。多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。C++ 不转载 2015-09-23 16:10:48 · 494 阅读 · 0 评论 -
C++ 类 & 对象
C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类被称为类的成员。C++ 类定义定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是转载 2015-09-23 14:46:49 · 617 阅读 · 0 评论 -
OPENGL在VC中的配置及出现“无法定位程序输入点_glutInitWithExit于动态链接库glut32.dll上”的解决方案
首先,说明如何在VC中配置OPENGL开发环境。在开始之前,首先确保你的VC已经包含了相应的OpenGL库文件,否则,将无法进行编译。若没有的话,可以在网上下一个。然后解压,将INCLUDE文件夹中的头文件拷贝到VC安装目录下的/Include/GL文件夹中;将LIB文件夹中的头文件拷贝到VC安装目录下的/Lib文件夹中;将DLL文件夹中的头文件拷贝到C:/Windows/Syst转载 2015-09-23 16:55:50 · 4431 阅读 · 0 评论 -
C++ 动态内存
C++ 程序中的内存分为两个部分:栈:在函数内部声明的所有变量都将占用栈内存。堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。很多时候,无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。在 C++ 中,可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址。这种运算符即new 运算符转载 2015-09-23 15:47:53 · 459 阅读 · 0 评论 -
C++ atof函数
atof函数:功能:将字串转换成浮点型数相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include 定义函数 double atof(const char *nptr);函数说明: atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或原创 2015-09-24 16:09:05 · 5615 阅读 · 0 评论 -
C++ - 继承与派生的概念
在C++中可重用性是通过继承(inheritance)这一机制来实现的。因此,继承是C++的一个重要组成部分。根据类的知识,一个类中包含了若干数据成员和成员函数。在不同的类中,数据成员和成员函数是不相同的。但有时两个类的内容基本相同或有一部分相同,例如已经声明了学生基本数据的类Student:class Student{public: void display( )转载 2015-10-01 09:49:28 · 689 阅读 · 0 评论 -
C++ - pow函数
函数名称: pow函数原型: double pow( double x, double y );函数功能: 计算x的y次幂所属文件: 例1:计算8的2次方: double x=8, y=2; double z; z=pow(x,y);例2:/* pow example */#include /* pri翻译 2015-09-29 11:45:19 · 28540 阅读 · 0 评论 -
Caffe源码 - SoftmaxWithLossLayer
Softmax with Loss Layer网络层 type: SoftmaxWithLossDoxygen Documentation头文件: ./include/caffe/layers/softmax_loss_layer.hppCPU 代码: ./src/caffe/layers/softmax_loss_layer.cppCUDA GPU 代码: ./src/caffe/lay原创 2017-06-13 13:34:26 · 2634 阅读 · 0 评论 -
C++ - .h和.cpp文件的区别
转自:http://www.cnblogs.com/shelvenn/archive/2008/02/02/1062446.html关于头文件和源文件的分别首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西? 就是编译单元了.一个程序,可以由一个编译单元组成, 也可以有多个编译单元组成. 如果你不转载 2015-09-21 09:41:52 · 2522 阅读 · 0 评论 -
C++ - “当前不会命中断点 还没有为该文档加载任何符号”解决方法
调试时总是出现“当前不会命中断点 还没有为该文档加载任何符号”这样的错误。出现这种情况的时候,可以按以下几种方式解决:1.把编译选项设置为"Release"就会这样,因为不产出调试信息. 设置为"Debug"(在工具栏上有).2. a.打开项目属性页,检查“配置属性”下的“生成”中的细项,其中“生成调试信息”的属性是否设置为true,如果没有,就把它设置为“true”。 b原创 2015-09-21 10:27:58 · 4308 阅读 · 0 评论 -
C++ - 头文件(.h)和源文件(.cpp)都应该写些什么
转自:http://www.cppblog.com/lhking/a这个问题在许多C++程序员看来会很搞笑,“这么简单的问题还用得着你废话!”。但是由于本人生性愚钝,学C++的时候,确实花了很久的时间都搞不明白,只是会写一个文件,但不会写一个工程。而用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 。下面就非常简洁明了地谈谈头文件(.h)和源文件(.cpp)应该怎么转载 2015-09-21 09:52:12 · 1768 阅读 · 0 评论 -
C++ - 栈对象的empty和size
empty和size两个操作都是队列和优先级队列支持的操作;Q.empty() 如果队列为空,则返回true,否则返回false;Q.size()返回队列中的元素的个数;因此用Q.size == 0 也是用来判断对象是否为空的办法。需注意的是Q.size()成员函数返回的并不是整型数值,而是size_type类型的值,它是与unsigned型具有相同的含义而且可以保证足够大能够原创 2015-09-24 15:55:39 · 2582 阅读 · 0 评论 -
Dev - C++简单使用指南
文 刘洋第1步:点击菜单栏的“文件->新建->工程…“第2步:选择“Console Application”、“C工程”,名称命名为“hello”,然后点击“确定”。第3步:弹出的对话框让你选择将工程文件存放在什么位置,可自行选择目录,然后点击“保存”。第4步:保存后显示的界面如下:可修改为:第原创 2015-09-24 09:59:02 · 1568 阅读 · 0 评论 -
C++ - ofstream和ifstream函数详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中转载 2015-09-29 09:46:30 · 5621 阅读 · 0 评论 -
C++ - string::push_back
函数功能:在后面添加一项vector头文件的push_back函数,在vector类中作用为在vector尾部加入一个数据。string中的push_back函数,作用是字符串之后插入一个字符。函数原型:void push_back(value_type_Ch);在vector类中:void push_back(const_Ty&_X){insert(e翻译 2015-09-29 10:06:29 · 21987 阅读 · 0 评论 -
error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”的解决方案
错误提示:error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”(***.obj 中)错误原因是:Debug使用了Release的库文件。即使链接库里面两个都添加着,但是release库文件放在了debug前面,也是出错的。默认按顺序使用库文件。类似错误:如release下使用了Debug原创 2015-09-23 17:18:38 · 1345 阅读 · 0 评论 -
Visual Studio2010中不能调试CMake生成的项目
出现问题:在VS2010中打开由CMake生成的工程文件,包含ALL_BUILD、***(编译的项目文件)和ZERO_CHECK三个项目。编译的时候出现错误提示:无法启动程序,无法找到文件 XXX\ALL_BUILD解决办法:在VS2010中鼠标右击对应的工程文件,单击“移除”移除ALL_BUILD和ZERO_CHECK这两个工程文件,剩下 ***(编译的项目原创 2015-09-23 17:04:29 · 2381 阅读 · 0 评论 -
C++ 预处理器
预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。我们已经看到,之前所有的实例中都有 #include 指令。这个宏用于把头文件包含到源文件中。C++ 还支持很多预处理指令,比如 #include、#define、#if、#e转载 2015-09-23 16:07:32 · 943 阅读 · 0 评论 -
C++动态分配内存(new)和撤销内存(delete)
在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。注意: new和delete是运算符,不是函数,因此执行效率高。虽然为了与C语言兼容,C++仍保留malloc和free函数,但建议用户不用转载 2015-09-20 10:56:47 · 882 阅读 · 0 评论 -
Visual Studio2010 出现“此时无足够的可用内存,无法满足操作的预期要求”问题的解决方法
网上找到了VisualStudio2010的补丁,赶紧打上补丁即可补丁地址:https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=29729脚本之家下载地址 http://xiazai.jb51.net/201007/tools/VS10-KB2251084-x86.原创 2015-09-29 15:31:24 · 3341 阅读 · 0 评论 -
C++ 定义和调用函数
无参函数定义的一般形式为: 类型标识符 函数名([void]) { 声明部分 语句 }有参函数定义的一般形式为: 类型标识符 函数名(形式参数表列) { 声明部分 语句 }注:C++要求在定义函数时必须指定函数的类型。原创 2015-09-27 22:15:53 · 739 阅读 · 0 评论 -
C++ boost::filesystem官方指南
C++程序一直有一个方面不能做可移植性,尽管标准库有几个函数用于操作与文件系统相关的任务,但是这几个函数作用相对我们日常对文件系统操作的需求来说真是杯水车薪,所以对目录、路径、文件元信息的操作一直难以做可移植性。然而对于现在的程序来说,可移植性极端重要,谁也不保证他写程序不要某一天要移植更一个系统中去,可能这个系统现在大家还很少听说。boost.filesystem为大家提供了一个选择。b转载 2015-09-28 11:22:47 · 8813 阅读 · 1 评论 -
C++ int main(int argc,char* argv[])详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i<argc; i++) cout<<argv[i]转载 2015-09-28 10:44:26 · 1728 阅读 · 0 评论 -
C++ std::vector : 用法与技巧
std::vector : 用法与技巧1.介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在 remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。2.Vector总览vect转载 2015-09-28 11:09:09 · 1083 阅读 · 0 评论 -
Visual Studio2010中的外部依赖项
Visual Studio2010中的项目下拉列表下面有外部依赖项,里面显示的文件是你程序中显示包含的头文件所包含的的头文件。比如,main函数里面包含了windows.h头文件,而windows.h头文件又包含其他头文件,而这些头文件又可能还包含另外的头文件,所有这些都显示在外部依赖项里面。于是有的时候外部依赖性就变得很庞大。若想减少外部依赖项,那就尽量避免包含不必要的头文件。不过根据编原创 2015-09-28 09:55:22 · 5378 阅读 · 0 评论 -
C++ getchar()函数
getchar函数功能:从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符。返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回-1。具体说明:1.从缓冲区读走一个字符(相当于清除缓冲区);2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这原创 2015-09-26 22:59:46 · 25791 阅读 · 0 评论 -
单步执行
转自:点击打开链接单步执行是最常见的调试手段之一,即每次执行一行代码。“调试”菜单提供了三个逐句通过代码的命令:逐语句逐过程跳出“逐语句”和“逐过程”的差异仅在于它们处理函数调用的方式不同。这两个命令都指示调试器执行下一行的代码。如果下一行包含函数调用,“逐语句”仅执行调用本身,然后在函数内的第一个代码行处停止。“逐过程”执行整个函数,然后在函数外的第一个行处停止。转载 2015-09-21 10:47:20 · 2798 阅读 · 0 评论 -
Visual Studio 在中断模式下检查和修改数据
在调试程序的过程中,如果程序在某个位置挂起执行(例如:中断到某个断点),通常我们希望能够通过一些工具观察程序的当前状态。其中,最重要的当属查看程序中数据的值。例如,查看某个变量的类型和值、某个寄存器的值、或某段内存的值。所以,几乎所有的调试器提供了大量用于检查和修改程序数据的工具。 表 1列出了Visual Studio所提供的用于检查和修改程序数据的工具。原创 2015-09-21 14:41:56 · 4360 阅读 · 0 评论 -
C++ 指针
学习 C++ 的指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。学习指针是很有必要的。每一个变量都有一个内存位置,每一个内存位置都定义了可使用&运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include using namespace std;int转载 2015-09-22 11:17:53 · 976 阅读 · 1 评论 -
C++ 异常处理
异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。cat转载 2015-09-23 15:38:02 · 685 阅读 · 0 评论 -
C++ 数据抽象、数据封装与接口(抽象类)
C++ 数据抽象数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD 播放器),但是您不知道它的内部实现细节,也就是说,您并不知道它是如何通过缆线接收信号,如转载 2015-09-23 15:25:40 · 2887 阅读 · 0 评论 -
动态链接库和静态链接库的区别
静态链接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最转载 2015-09-23 15:06:42 · 620 阅读 · 0 评论 -
C++ 支持的一些重要运算符及运算符优先级
重要运算符:运算符优先级:原创 2015-09-21 17:16:03 · 558 阅读 · 0 评论 -
C++ 随机数
在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。下面是一个关于生成随机数的简单实例。实例中使用了 time() 函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数:#include #include #include using namespace原创 2015-09-21 18:01:13 · 803 阅读 · 0 评论 -
C++ using namespace std 详解
一 :和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。 因此,当使用时,相当于在c中调用转载 2015-09-21 16:27:42 · 658 阅读 · 0 评论