C++
邓无邪
拟把疏狂图一醉
展开
-
为什么C++中声明和定义要分开写
现在开始写项目了,你会发现我们一般都要写一个cpp,对应的还得有一个h文件,那么为什么在C++中我们要这么做?.h就是声明,.cpp就是实现,而所谓分离式实现就是指“声明”和“定义”分别保存在不同的文件中,声明保存在.h文件、定义保存在.cpp文件中。 那么将声明和定义分离有什么意义吗?首先从非分离式(声明的同时给出定义)看,其内容一般保存在.h文件中,以供多个源文件引用。原创 2015-11-11 09:42:45 · 3910 阅读 · 0 评论 -
vector中删除第k个元素的巧妙方法
假设我们定义了一个vector如下:vector v;如果要删除第k个的话,应该这样写:(1)如果k是第0个vector(v.begin() + 1, v.end()).swap(v);(2)如果k是最后一个,v.pop_back();(3)其他vector v_c(v.begin() + k + 1, v.end());v.resize(k);原创 2015-11-11 10:15:24 · 1297 阅读 · 1 评论 -
模板函数的编译模式(模板函数不支持分离编译)
1.函数模版的编译模式分两种:完全包含编译模式和局部编译模式(需要用export关键字)2.不同的编译器对这两种编译模式的支持各不相同,但一般都支持完全包含编译模式,具体支持情况需要参照具体使用的编译器文档模版函数和普通函数在使用的时候有一定的区别:(1)普通函数在使用的源文件中直接include该函数的声明即可(2)模版函数在使用的源文件中既要include模版函数的声明,也转载 2015-12-16 11:27:14 · 2208 阅读 · 0 评论 -
以OpenCV库为例讲解如何在VS中配置第三方动态库
正常情况下,你拿到的别人的第三方动态库(静态库调用方式这里不讲,有另外一篇文章)至少应该包含下面三种文件:1. 头文件,这个一般放在include这样字眼的文件夹下,比如OpenCV的:然后include里面还分成了许多文件夹,便于管理。2. dll文件,这个一般放在bin这样字眼的文件夹下,比如:3. dll配套的动态lib文件,这个就一般放在li原创 2016-12-07 17:03:24 · 6640 阅读 · 0 评论 -
使用VS在64位平台下编译代码,生成64位dll
最近要把一个之前在32位平台下编译的项目改成64位平台,之前从来没搞过关于64位的东西,所以到处查资料,所幸搞成功了,把过程记录一下,防止以后忘记。首先声明:64位平台无法直接调用32位dll,32平台也无法直接调用64位dll。使用工具:VS2010首先,用VS2010打开之前的项目,这时候项目的平台是32位的,如下图所示:点击Win32那原创 2017-01-04 14:30:57 · 33241 阅读 · 1 评论 -
STL容器的reserve()函数和resize()函数解析
以vector为例,可以用reserve()和resize()函数来为容器预留空间或者调整它的大小。不过从它俩的名字上可以看出区别:reserve():serve是“保留”的词根,所以是用来保留,预留容量的,并不改变容器的有效元素个数。resize():size是“大小”的意思,它主要用来调整容易有效元素的个数,有时候也会造成容量变大。先解释两个概念:容量:即capacit原创 2016-12-20 12:44:18 · 1647 阅读 · 0 评论