
C++
文章平均质量分 85
奶罐
慢慢来
展开
-
数据结构 - 十字链表之稀疏矩阵的存储
当数组中非零元素非常少时,我们可以称之为稀疏矩阵。为了减少空间的浪费,在存储稀疏矩阵的时候,我们对它进行压缩存储,即指存储非零信息。一、数组的顺序存储在存储稀疏矩阵的时候,除了存储非零元素的值,还需要存储其行列号i和j,故每个非零元素要用一个三元组(i, j, v)来描述。因为要与矩阵的对应关系,我们还需要在三元组表中增设非零元素的个数和矩阵行列大小。那么,稀疏矩阵的数组表达如下所示。st...原创 2019-02-19 14:51:33 · 10261 阅读 · 0 评论 -
C/C++ 数组的定义与初始化
一、普通数组1.1 memset//标准库里memset的源码void *(memset)(void *s, int c, size_t n) { const unsigned char uc = c; unsigned char *su; for (su = s; 0 < n; ++su, --n) *su = uc; ...原创 2019-02-18 21:43:55 · 5642 阅读 · 0 评论 -
C++ STL: Container
reference - http://www.cplusplus.com/reference/stl/在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。简单来说,就是保存其它对象的对象.容器类自动申请和释放内存,因此无需new和delete操作。一、序列式容器 Sequence containers各元素之间有顺序关系的线性表...原创 2019-02-18 01:10:17 · 978 阅读 · 0 评论 -
C++ delete释放内存的本质
在C++中,调用delete的时候,系统会自动调用已分配的对象的析构函数,然后释放指定内存。然而,通过验证可以发现,delete所谓的释放内存,只是将指定空间定义为可分配内存,该空间仍保留原有的值,且可以访问。测试样例#include <iostream>using namespace std;class A{public: int value; A * next; ...原创 2019-02-21 13:34:21 · 5857 阅读 · 4 评论 -
C++ STL: map的按key和按value排序
相关内容: C++ STL: map自定义键值类型、C++ 函数对象(函数符)本文目录1. map定义2. 按key排序3. 按value排序4. 参考链接 1. map定义 在将map的排序之前,我们要知道它是STL里的一个模板类,用来存放<key, value>键值对的数据结构,定义如下。template < class Key, ...原创 2018-09-30 18:00:36 · 5336 阅读 · 0 评论 -
C++命令行编译工具:MinGW的g++安装、开发人员命令提示
之前一直用Mac自带的g++对C++源文件进行命令行编译,这两天想转到windows平台上,发现命令行并不能直接用。因此,在这里记录一下简单的编译方法。本文的方法主要是按照微软官方文档来的,方法有一个前提:Windows10,并且已经安装了Visual Studio 2015及以上。满足了上述前提,可以进行如下操作对c++文件进行编译。1. 打开“开发人员命令提示”。打开方法参考这篇微软...原创 2018-10-08 21:01:41 · 1321 阅读 · 0 评论 -
C++ STL: map自定义键值类型
相关内容: C++ STL: unordered_map自定义键值类型本章目录1. map定义2. 简单方法: 重载operator<()操作符3. 其它方法:自定义compare函数3.1 方法1: 利用std::function3.2 方法2: 比较函数的函数对象3.3 方法3: less函数的模板定制 1. map定义 map是STL里的一个模板类,用来...原创 2018-09-29 19:11:00 · 24242 阅读 · 9 评论 -
C++ 函数对象(函数符)
本文主要参考:文章1、文章2。目录1. 什么是函数对象2. 函数对象的按值传递3. 函数适配器3.1 绑定器3.2 取反器4. 自定义容器的排序 1. 什么是函数对象 尽管函数指针被广泛用于实现函数回调,但是回调函数是来自C语言的,在C++中应只在与C代码建立接口,或与已有的回调接口打交道时,才使用回调函数。更重要的是,C++提供了另外一个可以实现回调函数的方法,那...原创 2018-09-29 15:39:58 · 1455 阅读 · 0 评论 -
C++ template 模板
1. 关于模板1.1 基本概念1.2 模板与普通类定义上区别2. 两种模板2.1 函数模板2.2 类模板3. 模板特化3.1 全特化3.2 偏特化4. 容器适配器5. 模板与虚函数5.1 模板类中使用虚函数5.2 模板成员函数不可以使用虚函数6. 模板类型转换 1. 关于模板 1.1 基本概念 模板其实是C++泛型编程思想的一种体现。简...原创 2018-09-29 15:11:49 · 352 阅读 · 0 评论 -
C++ 回调函数
参考链接:https://www.jb51.net/article/116321.htm回调函数是通过函数指针调用的函数:把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就称为回调函数。一般来说,回调函数都会放在一个宿主函数里,如下图。回调函数是否被执行,要看宿主函数是否调用它。主程序不知道宿主函数什么时候调用回调函数,因为调用函数启动了线程,这样,主程...原创 2018-09-13 17:05:01 · 282 阅读 · 0 评论 -
C++ 函数指针
转载自:http://www.cnblogs.com/TenosDoIt/p/3164081.html1. 概念函数指针,顾名思义就是指向函数的指针。函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码。一个函数的地址是该函数的进入点,也是调用函数的地址。函数的调用可以通过函数名,也可以通过指向函数的指针来调用。函数指针还允许将函数作为变元传递给其他函数。...转载 2018-09-13 16:39:09 · 189 阅读 · 0 评论 -
C++ STL:unordered_map 自定义键值类型
本文在参考Mark Nelson的文章的基础上,提出了自己的样例,整理了完整的unordered_map自定义键值机制。目录1. 问题抛出2. 三种解决方案2.1 方法 1 - 指向函数的指针2.2 方法 2 - 将哈希函数打包成函数对象2.3 方法 3 - std::hashT的特化1. 问题的抛出首先,我们来看一下unordered_map的参数构成。...原创 2018-09-12 22:32:04 · 35276 阅读 · 15 评论 -
C++ 智能指针
目录1. 产生的原因2. 智能指针简介3. auto_ptr4. unique_ptr5. shared_ptr6. weak_ptr参考链接:auto_ptr 参考shared_ptr参考 1. 产生的原因 内存泄漏当我们当从堆中申请了内存后,如果不释放空间,就发生内存泄漏。内存泄漏的情景主要有一下几种:* new和delete没有匹配。* 没有正确清楚嵌套对象...原创 2019-04-16 15:05:28 · 422 阅读 · 0 评论