C++
文章平均质量分 90
lijiayu2015
学习本来是一件很快乐的事情,别把它妖魔化
展开
-
变长数组(动态数组)
1.变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做://文件名: array01.cpp #include using namespace std; int main() { int len;转载 2016-09-20 11:04:15 · 13844 阅读 · 0 评论 -
Matlab代码迁移至C++(上)
一、背景 用MATLAB的强大神器——Coder将MATLAB代码转移到C++转载 2016-12-02 22:45:53 · 10686 阅读 · 3 评论 -
Matlab代码迁移至C++(下)
在我的上一篇博文——Matlab代码迁移至C++(上)中,我们已经将编写的MATLAB代码成功的转换为了C++代码,生成了如图1的一些文件与文件夹。现在就来讲解一些如何将它们应用到VS环境下。 以下是详细步骤。 第1步: 打开VS2008(在转C++代码时,你用的什么编译器,就打开什么编译器),新建一个控制台应用程序的空白项目,名称与目录自定,我的是“mytset”以及“C:\Users\Wa转载 2016-12-02 22:53:33 · 5296 阅读 · 0 评论 -
c++将点向量的数据以指定形式和指定精度保存到txt
#include <iostream>#include <fstream>#include <string>#include <vector>using namespace std;int main(){ //初始化向量 vector<Point2d> end_point_inSRC; for (int i = 0; i < end_point_inROI.size原创 2016-12-26 20:32:51 · 1781 阅读 · 0 评论 -
矩阵乘法运算
struct Matrix:vector<vector<int> >//使用标准容器vector做基类,需#include语句{ Matrix(int x=0,int y=0,int z=0)//初始化,默认为0行0列空矩阵 { assign(x,vector<int>(y,z)); } int h_size()const//常量说明不可省,否则编译转载 2017-01-06 15:31:14 · 648 阅读 · 0 评论 -
整形和字符串连接
方法1:(_itoa_s)string imgname1 = “E:\RotPosExperiment\12.23\底部相机标定\内参标定\像素当量标定\Image000”; string imgname2 = “.bmp”; int i=1; char num[3]; _itoa_s(i, num, 10); string imgname = imgname1 + num+ imgnam原创 2016-12-31 11:19:56 · 1729 阅读 · 1 评论 -
c/c++ main 函数命令行参数的使用 知识小结
C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程 序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用 的是有参函数,则参数在调用时传递。C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)//或int main(int argc, char转载 2017-01-16 22:31:33 · 1270 阅读 · 0 评论 -
C++类的大小——sizeof(class)
第一:空类的大小class CBase { }; 运行cout<<”sizeof(CBase)=”<#另外:空类 class A { };void main() { printf(“sizeof(A): %d\n”, sizeof(A)); getchar(); } 得到结果为:1。类的实例化就是给每个实例在内存中分配一块地址。空类被实例化时,会由编译器隐转载 2017-07-13 16:12:07 · 463 阅读 · 0 评论 -
递归思想输出数组全排列
void perm(int list[], int k, int m){ if ( ) { //打印结果 copy(list,list+m,ostream_iterator<int>(cout," ")); cout<<endl; return; } for (int i=k; i<=m; i++)原创 2017-07-16 20:33:25 · 944 阅读 · 0 评论 -
Hanoi Tower 汉诺塔的简单分析/C
有一个梵塔,塔内有三个座A、B、C,A座上有诺干个盘子,盘子大小不等,大的在下,小的在上(如图)。把这些个盘子从A座移到C座,中间可以借用B座但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。描述简化:把A柱上的n个盘子移动到C柱,其中可以借用B柱。我们直接假设有n个盘子: 先把盘子从小到大标记为1、2、3……n 先看原问题三个柱子的状态: 状态0 A:转载 2017-07-16 22:16:02 · 678 阅读 · 0 评论 -
递归全组合问题
有m个砝码,重量分别为1g,2g,3g,……,mg,问可以组合成多少种重量,每种重量有多少种组合方式,例如: 输入1,2,3;输出6,{1,1},{2,1},{3,2},{4,1},{5,1},{6,1},表示能组合成3种重量,括号中第一个数表示重量,第二个数表示组合方式数量。#include "stdafx.h"#include<iostream>using namespace std;/原创 2017-07-27 10:09:52 · 535 阅读 · 0 评论 -
基于OpenCV立体视觉标定和校正
立体标定时计算空间上的两台摄像机几何关系的过程,立体校正则是对个体图像进行纠正,保证这些图像可以从平面对准的两幅图像获得。双目视觉标定,通常会使用了两种工具:OpenCV和Matlab。Matlab的效果非常稳定,但是一开始OpenCV的效果很糟糕,要不是出现中断就是标定出来的结果数值很大。经过了几天的不断调试和更改,终于把OpenCV的立体视觉标定和校正的程序写出来了。总结了引起这些异常的原因以及排查标定过程异常的方法。原创 2016-11-08 10:26:50 · 19060 阅读 · 25 评论 -
怎样让函数返回数组
用动态内存new和形参的方法让C++中函数返回一个数组原创 2016-10-15 10:23:59 · 19304 阅读 · 1 评论 -
static
关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性 static 的两大作用: 一、控制存储方式 static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 引出原因: 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量转载 2016-09-28 14:29:19 · 381 阅读 · 0 评论 -
C++ const用法 尽可能使用const
转自:http://www.cnblogs.com/xudong-bupt/p/3509567.html C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量 #includeusing namespa转载 2016-09-23 17:33:03 · 446 阅读 · 0 评论 -
<string>、<cstring>和<string.h>
是C版本的头文件,包含比如strcpy、strcat之类的字符串处理函数。在C++标准化(1998年)过程中,为了兼容以前,标准化组织将所有这些文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个"c"前缀并且去掉了.h的后缀名,所以string.h头文件成了cstring头文件。但是其实现却是相同的或是兼容以前的,这就是的来源,不要觉得又多了一个东西。相当于标准库组转载 2016-09-20 20:16:37 · 1148 阅读 · 0 评论 -
CString与string、char*的区别和转换
我们在C++的开发中经常会碰到string、char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆。下面详细介绍这三者的区别、联系和转换:各自的区别char*:char*是一个指向字符的指针,是一个内置类型。可以指向一个字符,也可以表示字符数组的首地址(首字符的地址)。我们更多的时候是用的它的第二的功能,来转载 2016-09-20 20:57:21 · 2554 阅读 · 0 评论 -
c_str()
首先明确一下:char是C语言标准库的数据类型;string是C++为了方便用户定义的一个字符串类,这个类重载了操作符"+""-"等等,还有很多成员函数方便用户使用,所以在C++中编程使用string给我们带来了很大的方便。C语言中只有char类型的字符标准库,为了让C++的string 和C的char兼容,定义了string类的成员函数c_str(),该函数返回一个char类型的指针原创 2016-09-20 21:09:49 · 560 阅读 · 1 评论 -
string和LPCWSTR的直接转换函数
//wstring转换成stringstd::string WChar2Ansi(LPCWSTR pwszSrc){ int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL); if (nLen <= 0) return std::string(""); char* pszDst = new原创 2016-09-21 10:51:03 · 7342 阅读 · 0 评论 -
c++ 模板类 声明和定义都放在.h文件的原因
首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)文件格式,并且本身包含的就已经是二进制码,但是不一定能够执行,因为转载 2016-09-24 15:18:43 · 5451 阅读 · 3 评论 -
Windows API
本文为了从C语言的面向过程说明窗口创建、操作的过程。 1.窗口创建过程 每种窗口是一种类,例如form类型的窗口类、文本窗口类等等,不同的类包含的变量和消息处理方法不一样。要创建一个窗口,首先需要把类名和消息处理函数注册到WINDOWS操作系统中,然后使用已经注册的类名来创建窗口。 第一步,注册窗口类,实际上就是对结构体WNDCLASSEX初始化,然后用该结构体作为ATOM RegisterC原创 2016-10-13 15:32:19 · 705 阅读 · 0 评论 -
被搞得晕头转向的LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
首先明确一点,这些都是C++定义的宏,为了让程序开发更方便快捷,下面是MSDN中的一个表格:宏定义对照表类型MBCSUnicodeWCHARwchar_twchar_tLPSTRchar*char*LPCSTRconst char*const char*LPWSTRwchar_t*wch原创 2016-09-20 22:21:34 · 2043 阅读 · 0 评论 -
const
转自:http://www.jb51.net/article/41629.htm C++中为什么会引入const C++的提出者当初是基于什么样的目的引入(或者说保留)const关键字呢?,这是一个有趣又有益的话题,对理解const很有帮助。 1.大家知道,C++有一个类型严格的编译系统,这使得C++程序的错误在编译阶段即可发现许多,从而使得出错率大为减少,因此,也成为了C++与C相比,有着突转载 2016-09-28 14:50:39 · 388 阅读 · 0 评论 -
inline
转自:http://www.jb51.net/article/41629.htm 上一节谈了const后,下面再来谈一下inline这个关键字,之所以把inline放在这个位置,是因为inline这个关键字的引入原因和const十分相似,下面分为如下几个部分进行阐述。 C++中引入inline关键字的原因: inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形转载 2016-09-28 14:58:49 · 324 阅读 · 0 评论 -
变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。原创 2017-09-09 19:23:09 · 391 阅读 · 0 评论