Windows提供了非常好用的方法SHFileOperation,而且功能强大, 不光可以拷贝,还有移动、删除等等操作。直接上代码: 1void CopyFolder(TCHAR* srcFolder, TCHAR* dstFolder)2{3 SHFILEOPSTRUCT fop = {0};4 fop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR;5 fop.wFunc = FO_COPY;//选择执行类型,FO_COPY,FO_DELETE,FO_RENAME,FO_MOVE四种 6 7 fop.pFrom = srcFolder;//如:...
//AVL树#include<iostream>
#include<functional>
using namespace std;
class avl_tree
{
private:struct tree{int data;tree* L;tree* R;int height;tree(int data_) :data(data_), L(0), R(0), height(0){}};tree* root;
public:avl_tree() :root(0){}void Insert(int data){function<void(tree*&, int)> ins = [&](tree*& r, int d){if (r == NULL){r = new tree(d);}else if (d < r->data){ins(r->L, d);if (Height(r->L) - H...
程序代码#include <iostream>using namespace std;class Point//点类
{
public://使用初始化表初始化点类Point(double a = 0, double b = 0):x(a), y(b){}double getX();//得到x坐标double getY();//得到y坐标//重载<<实现点的坐标的输出friend ostream& operator<<(ostream &output, Point &p);protected:double x;//x坐标double y;//y坐标
};//得到x的值
double Point::getX()
{return x;
}//得到y的值
double Point::getY()
{re...
看了MFC中的动态创建对象后,感觉动态创建对象算是一种技术吧,理论上说算是一种设计模式。其实创建的原理很明了,把对象的类别名称和其构造函数用容器记录下来,在需要的时候给出创建类别查找容器即可创建对象。当然这里我们需要自定义一个全局的函数指针用来指向类别的构造函数。在这里我们使用类工厂模式,在泪工厂中我们定义一个通用构造函数,将函数指针指向它。下面是参考一位网友思路来整理和摸索的代码://通用的函数指针 ...
重载操作符++ ++有两种使用方法,一种a++,一种++a。刚学的时候一脸蒙蔽也不知道这样有何意义,后来得知其中的区别。下面记录一下我的学习记录。a++实现:constintoperator++(int){int temp = a;a=a+1;return temp;//该处返回的是一个值}++a实现:base& operator++(){a+=1;return *this;//返回当前对象} 1、因为值不能为左值,所以a++不能为左值。++a可以为左值。2、再者可以看出,a++返回的是加之前的值temp。++a返回的本对象(...
#include<iostream>using namespace std;class quicksort{public:int quicks(int *a,int low,int high){int q=a[low];//q int i=low; int j=high; while(i<j) { while(q<=a[j]&&i<j) { j--; } if(i<j) { swap(a[i++],a[j]); } while(a[i]<=q&&i<j) { i++; } if(i<j) { swap(a[i],a[j--]...
#include <iostream>
usingnamespace std;//插入排序法void insertSortMethod(int intArr[],int arrLen);
void printArrInfo(int intArr[],int arrLen);
int main()
{int arr[] = { 1,3,5,2,4,7,9,6,8 };int len = sizeof(arr) / sizeof(int);insertSortMethod(arr,len);printArrInfo(arr,len);system("pause");return0;
}
//插入排序法void insertSortMethod(int intArr[],int arrLen)
{int start = 0;for (int i = 0; i < arrLen...
工具:vs2012+GDAL 2.0包含头文件:#include "ogrsf_frmts.h"int main() { constchar *pszDriverName = "ESRI Shapefile";GDALDriver *poDriver;GDALAllRegister();poDriver = GetGDALDriverManager()->GetDriverByName(pszDriverName );if( poDriver == NULL ){printf( "%s driver not available.\n", pszDriverName ); return0; }GDALDataset *poDS;poDS = poDriver->Create("d:/newShp.shp", 0, 0, 0, GDT_Unknown, NULL )...
2. SGD训练SGD权重更新方式,同LR二分类的基本相同;所不同的是,二分类LR只用训练一个权重向量,而K分类LR需要训练K-1个权重向量。函数接口如下:// train by SGD on the sample file
bool TrainSGDOnSampleFile (const char * sFileName, int iClassNum, int iFeatureNum, // about the samplesdouble dLearningRate, // about the learning int iMaxLoop, double dMinImproveRatio // about the stop criteria);...
写惯了python,对于C++的语法越来越生疏,不同于python中函数可以return多个变量,C++的函数要想返回多个参数可以利用指针实现。因为在函数内部的变量都是局部变量,所以当参数传入函数中,不return不会改变函数之外的全局变量的值。但是如果传入指针参数或者地址参数,则可以实现对外部变量的改变。有以下2种做法:1、函数定义:void function(int &a){a = 500;//return; //void时可以省略return
} 函数调用:int b = 10;
func...
Base64原理Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2^6 = 64,所以每 6 个比特为一个单元,对应某个可打印字符。3 个字节有 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可由 4 个可打印字符来表示。它可用来作为电子邮件的传输编码。在 Base64 中的可打印字符包括字母 A-Z、a-z、数字 0-9 和 +, /。Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮...
用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表)、结点的查找、删除、排序、打印输出、逆置、链表销毁等基本操作。IDE:vs2013具体实现代码如下: [cpp] view plaincopy #include "stdafx.h" #include <malloc.h> #include <iostream> using namespace std; typedef struct Lnode { int data; struct Lnode *next; }*node; node head_creat() //头插法建立单链表 { node hea...
1.未初始化指针未初始化为NULL,造成判断条件出错数值未初始化为0,造成数组超界,内存泄漏 2.long long输入时lld or I64d写成d一定出错 3.gcc编译报错:程序中有游离的‘\357’‘\273’‘\277’等感谢http://www.cnblogs.com/lidp/archive/2009/06/17/1697886.html 造成的原因主要有两个:1. 程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。改成英文的标点半角符号就行了。甚至有时候空格也会出现类似错误,删...
红黑树的实现还真不简单,各种染色旋转足足折腾了笔者几天。。 不过收获也是巨大的。笔者现在终于明白为啥二叉搜索树这么重要了,确实很有用。 下面上代码。 细心的朋友可能会觉得似乎少了那么几个接口,没错,因为 Precessor(求前驱) / Successor(求后继) / getMaximum (求树中最大值)/ getMinimum(求树中最小值)/ Inorder Traversal(中序遍历)/ Postorder Traversal(后序遍历) 这些操作都可以直接用笔者二叉...
简介??k-d树(k-dimensional),是一种分割k维数据空间的数据结构(对数据点在k维空间中划分的一种数据结构),主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。举例
??上图就是一颗kdtree,可以看出kdtree是二叉搜索树的变种。
??kdtree的性质:kdtree具有平衡的特质,两树叶的高度差不超过1。(树越平衡代表着分割得越平均,搜索的时间越少)数据只存放在叶子结点,而根结点和中间结点存放一些空间划分信息(例如划...