c-c++
文章平均质量分 64
蜗牛一步一步往上爬
计算机视觉研究生
展开
-
C++中堆和栈
C++中堆和栈的完全解析内存分配方面:堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码 中的delete语句才能正确的释放本内存空间。我们常说的内存泄露,最常见的就是堆泄露(还有资源泄露),它转载 2016-04-12 11:17:22 · 676 阅读 · 0 评论 -
Sqlite3 C++ 使用方法
需要在 C++ 程序中读写 sqlite3 数据库,查阅了一下资料,发现了一个简单实用教程。另外还有如何在windows下生成sqlite3静态库。windows下生成sqlite3静态库去 sqlite 官网下载页面下载源文件 sqlite-amalgamation-3180000.zip 。在VS2013中,文件->新建->项目->Win32项目,命名为sqlite3(其他名称也行)。在向导转载 2017-05-12 11:15:19 · 10566 阅读 · 0 评论 -
C++ 实现文件的复制和移动
想实现一个文件的复制和移动的函数,来处理文件,可惜电脑上面没有安装Matlab,就想用 C++ 来实现这个功能。分别使用 C 里面的 rename 函数和 C++ 中的 stream 来实现。rename 就是简单的修改文件名,如果文件路径包含在文件名中了,那么就可以修改此路径实现文件移动的功能。 stream 的方式就是先读入文件,再写入新文件,可以设置是否保留源文件。^_^#include <原创 2017-02-26 19:44:18 · 12674 阅读 · 0 评论 -
Visual Studio: MSB3073 error exited with code 1
Error 1 error MSB3073: The command “setlocal “C:\Program Files (x86)\CMake\bin\cmake.exe” -DBUILD_TYPE=Release -P cmake_install.cmake if %errorlevel% neq 0 goto :cmEnd :cmEnd endlocal & call :c原创 2017-02-23 16:50:25 · 5071 阅读 · 4 评论 -
递归读取文件夹下所有文件
有时候需要获取一个文件夹下的所有文件,甚至需要获取特定类型的文件。下面介绍两种分别在 Linux 和 Windows下可以运行的程序实现。Linux C在 Linux 中可以使用 opendir,readdir,closedir 来实现.函数原型:int alphasort(const struct dirent **, const struct dirent **);int原创 2016-12-29 11:14:49 · 980 阅读 · 0 评论 -
C++ 虚函数表 vfptr
前言大家都应该知道C++的精髓是虚函数吧? 虚函数带来的好处就是: 可以定义一个基类的指针, 其指向一个继承类, 当通过基类的指针去调用函数时, 可以在运行时决定该调用基类的函数还是继承类的函数. 虚函数是实现多态(动态绑定)/接口函数的基础. 可以说: 没有虚函数, C++将变得一无是处!既然是C++的精髓, 那么我们有必要了解一下她的实现方式吗? 有必要! 既然C++是从C语言的基础上发展而来的转载 2016-09-25 10:14:18 · 21788 阅读 · 19 评论 -
链接提示 extern "C"
在 C++中调用 C 代码时,需要给编译器指定C代码要按照C语言的编译器编译,否则编译器会将C代码按照默认的C++编译器来编译C代码,这样在调用C代码时,会发生链接错误,找不到函数定义,因为C++编译器和C编译器对函数编译的过程都一点点区别。 下面先讲一下为什么会发送找不到函数定义的错误,进而弄清楚为什么需要extern “C” 来指定C编译器,然后再讲一个简单的例子说明如何使用 extern “原创 2016-10-10 16:24:31 · 784 阅读 · 0 评论 -
C++ priority_queue
template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue;优先队列默认采用vector实现,是最大堆。Priority queues are a type of container adaptors, spe原创 2016-09-07 11:08:04 · 546 阅读 · 0 评论 -
C++ set and multiset
简单来说 set 是一组有序数的集合,集合里的元素没有重复的,而 multiset 则允许元素重复。因此multiset在一些操作上要注意和set的区别。定义template < class T, // set::key_type/value_type class Compare = less<T>, // set::原创 2016-09-07 09:51:24 · 519 阅读 · 0 评论 -
我的C++学习路线
记录我学习C++的过程。希望对那些想学习C++的人能有一些参考价值。 首先需要说明的是,C 和数据结构我有一点点基础。C++ Primer 5th Edition首先要说明的是,我不是从零基础学习C++,本科学习学习过C语言,对C有一定的了解和基础。所以在学习C++的时候,我没有还太多时间纠结基本的语法。 对于同样有C基础的人,建议直接看Primer,看得很快,就像翻小说一样。主要是了解C++的原创 2016-05-01 20:25:19 · 1976 阅读 · 0 评论 -
c++实现简单矩阵类Mat
刚学习C++,之前把 Primer 看了一遍,现在也在刷 leetcode,感觉学习编程语言光看书页刷题也是不够的,最好是能做一些实际的项目,这样要用到哪些东西时不明白再看书,就会印象深刻些,否则光看书只是走马观花,看了也就忘了。 打算自己用C++实现一个简单的矩阵 Mat 类,包括一些简单的操作就可以了,但实现起来发现也并没有那么简单,还是遇到很多问题。这个过程也还是学到了不少东西。固定数据类型原创 2016-04-24 14:19:01 · 19945 阅读 · 2 评论 -
C++ friend template operator overload function
在之前实现矩阵类的时候,遇到了一个问题,当时使用非成员函数重载来调用类成员函数实现了输出,这样就避开了之前的错误。后来看到了类似的问题,弄清楚了之前为什么错了。现在就总结一下错误原因和几种解决方法。问题描述,直接上代码吧:mat.h#ifndef _MAT_H_#define _MAT_H_#include <iostream>#include <ostream>//implement Mat原创 2016-04-25 10:19:46 · 1284 阅读 · 0 评论 -
Binary search and lower_bound, upper_bound
传统的二分查找是为了寻找目标数在一个有序数组中是否存在的问题。返回值为布尔型变量(true or false)。但是有时候需要知道更多信息,比如如果存在,那么在数组中该数出现的第一个位置(left most)和最后一个位置的索引是多少?如果不存在,那么如果把该数插入到数组中去,应该插入到哪个位置?所以需要深入一步探索二分查找算法。C++中给出了几个库函数binary_search(),lower_b原创 2016-09-13 19:35:10 · 741 阅读 · 0 评论