![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
巫祝
点点滴滴汇成海洋
展开
-
bitset用法
bitset对于二进制的操作实在是easy,加上在写遗传算法时候要用得到,所以整理下,以便以后使用bitset除了可以访问指定下标的bit位以外,还可以把它们作为一个整数来进行某些统计。 可以如下声明一个该类型变量: bitsetvarm (M) 其中varm为变量名。 N表示该类型在内存中占的位数,是二进制。 M表示变量v原创 2012-02-12 13:51:55 · 1565 阅读 · 0 评论 -
C++ 模板的特化与偏特化
自:http://blog.sina.com.cn/s/blog_93b45b0f01014jnj.html模板与泛型编程是C++中最为复杂、最为变态,当然也是它区别于、优于别的语言的一个语言特点。这里介绍一下,有关模板特化与偏特化的相关概念。 在C++中泛型编程(不要和C++模板机制简单的等同起来)基本上享有和面向对象等同的地位,甚至比面向对象的地位更高。许多书上转载 2013-08-29 13:20:48 · 854 阅读 · 0 评论 -
functor 仿函数
仿函数(functor)的概念 仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 在我们写代码时有时会发现有些功能的实现的代码,会不断的在不同的成员函数中用到,但是又不好将这些代码独立出来成为一个类的一个成员函数。但是又很想复用这些代码。写一个公共的函数,可以,这是一个解决原创 2012-09-04 10:19:23 · 2990 阅读 · 0 评论 -
c++中的 trivial destructor
如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如果特定定义了析构函数,则说明需要在释放空间之前做一些事情,则这个析构函数称为non-trivial destructor。如果某个类中只有基本类型的话是没有必要调用析构函数的,delelte p的时候基本不会产生析构代码,在C++的类中如果只有基转载 2013-10-05 13:28:45 · 4938 阅读 · 6 评论 -
C++中的深拷贝和浅拷贝
当类中没有定义拷贝构造函数时候,编译器会产生一个默认构造函数,默认构造函数的作用是把一个对象的全部数据成员赋值给另一个对象的数据成员。C++把对象数据成员的简单赋值称为浅拷贝。浅拷贝的对象和原来对象指向同一个内存空间,如果原来对象析构释放掉空间,拷贝的对象析构时候会出问题。而深拷贝就是自己定义拷贝构造函数,实现数据的真正分配空间与初始化。 当类的数据成员都是内置类型时候,浅拷贝是没有问题原创 2013-10-05 21:34:34 · 718 阅读 · 0 评论 -
c++读取某文件夹下的所有文件并查找.txt类型文件名
开始以为是个很简单问题后来才发现有点麻烦,最后实现如下,其中tmp是要查找的文件的类型,改成其他的如.java就可以查找java类型文件名#include#includeusing namespace std;int main( void ){ DIR* dirp; struct dirent* direntp; dirp = opendir( "F:\\out原创 2014-03-31 14:50:48 · 7157 阅读 · 1 评论 -
c++ 实现url的转码与解码 urlencode urldecode
在网上找的代码各种问题,最终自己实现了一个版本原创 2014-09-03 11:35:45 · 12453 阅读 · 2 评论 -
利用C++实现md5算法
因为需要校验文件,所以要使用md5算法,发现用python脚本生成文件的md5值不要太简单啊#-*- coding:utf-8 –*-import os,sysfrom hashlib import md5#文件的MD5校验码是根据文件的内容生成的信息摘要,方法如下,def md5_file(name): m = md5() fd = open(name, 'r转载 2015-01-06 20:55:33 · 22856 阅读 · 9 评论 -
序列化:Google Protocol Buffer 的使用和原理
用到序列化,发现一篇文章不错,特此转载,原文地址是 http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ 原作者:刘明什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言转载 2015-07-13 15:53:27 · 1828 阅读 · 0 评论 -
C++中的联合体 union
我们应该按照C中的convention去使用union,这是我这篇文章要给出的观点。虽然C++使得我们可以扩展一些新的东西进去,但是,我建议你不要那样去做,看完这篇文章之后,我想你大概也是这么想的。 C由于没有类的概念,所有类型其实都可以看作是基本类型的组合,因此在union中包含struct也就是一件很自然的事情了,到了C++之后,既然普遍认为C++中的struct与class基本等价,那转载 2013-08-29 10:28:20 · 7128 阅读 · 1 评论 -
重载之输入输出操作
IO操作符必须为非成员函数(可以声明为类的友元函数) 输出输出操作符重载Person{ public: friend ostream& operator friend istream& operator>>(istream& ,Person&);......}ostream& operator{osososreturn原创 2012-02-27 10:56:40 · 426 阅读 · 0 评论 -
关于构造函数没有返回值的问题
为什么构造函数不能有返回值?摘自 > “构造函数是一种很特殊的函数,因为他没有返回值。这和‘返回值为void’有极大的差别。返回void时,一般函数并不返回任何东西,但是一般的函数能够选择是否要返回些什么东西。构造函数则绝对不返回任何东西,而且你也没有任何选择。如果它有一个返回值,而且你有权利选择你自己的返回型别(return type),编译器势必得通过某种方式来知道如何处理那个原创 2012-02-23 10:41:40 · 4915 阅读 · 1 评论 -
构造函数
定义如何对类类型成员进行初始化的成员函数称为构造函数构造函数的名字与类的名字相同,并且不能指定返回类型!(没有return语句)默认构造函数:因为它是"默认"运行的,如果没有提供初始化式,那么就会使用默认构造函数,不管变量在哪里定义,默认构造函数都会被使用。为所有形参提供默认实参的构造函数也定义了默认构造函数有的类有默认构造函数,如string类定义了默认构造函数来初始化string变原创 2012-02-23 16:13:13 · 778 阅读 · 0 评论 -
getline的用法
getline的用法1 cin.getline()例如: char s[10]; cin.getline(s,2);cout输入:eurotoh输出:e //后面会有个\'0'其实getline有 3个参数,第一个:字符串,第二个:get的个数,第三个:终止字符,可以默认省略,否则遇到就终止2 getline()string s;ge原创 2012-02-15 16:07:24 · 416 阅读 · 0 评论 -
简单的遗传算法
//遗传算法 GA #include#include #includeusing namespace std;const int L=5; //定义编码的长度 int f(int x) //定义测设函数f(x) {int result;result=x*x原创 2012-02-15 15:28:24 · 458 阅读 · 0 评论 -
复制控制(copy control)
复制控制包括 :复制构造函数( copy constructor)析构函数(destructor)赋值操作符(assignment operator)复制构造函数只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为复制构造函数对 vector vec(5);编译器首先使用string默认构造函数创建一个临时值来初始化vec,然原创 2012-02-26 16:35:25 · 1001 阅读 · 0 评论 -
重载操作符与转换
重载操作符函数 :保留字operator后接需要定义的操作符号,有返回类型和形参表不能重载的操作符有 :: .* . ?:不能通过连接其他合法符号来创建任何新的操作符重载操作符必须具有一个类类型操作数, 以为如果只有内置类型对象的话,会重新定义原来的操作符操作符的优先级和结合性是固定的不再具备短路求值特性当操作数为成员函数,this指向原创 2012-02-26 21:40:54 · 406 阅读 · 0 评论 -
检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2” 原因
使用VS2012版本引用外部的lib进行编译时候提示:1>libprotobuf.lib(common.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(newSerializer.obj 中) 错误,产生这个问题的原因是当前工程是Debug版本,而引用的库文件时Release版本,只需要把当前的Debug原创 2015-07-15 10:30:25 · 14776 阅读 · 2 评论