自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

https://space.bilibili.com/59807853

移步b站,关于数学,计算机科学,深度学习,计算机视觉以及文艺的

原创 标准模板库(STL)之 map 列传 (二)

标准模板库(STL)之 map 列传 map 容器的遍历 修改 key or value 实用的成员函数 下标 vs atmap 容器的遍历 使用 range-based for 循环访问 map 元素(C++11之后方支持)std::map<std::string, float> ...

2016-02-29 21:21:52 580 0

原创 标准模板库(STL)之 list 列传

list 使用一个 double-linked list (双向链表)来管理元素。只有运用迭代器,才能够访问 list 中的各个元素。也即 list 不支持operator []运算符重载(不开放在这样的接口给用户的目的也恰在于这不是一个高效的访问 list 中元素的方式)。list vs vec...

2016-02-29 20:46:36 463 0

原创 数据结构——红黑树(red-black tree)

红黑树在改变元素数量和元素搜索方面都很出色,它保证节点安插时最多只会做两个重新链接(relink)的动作,而且到达某一元素的最长路径的深度,至多只是最短路径的深度的两倍。STL 中的重要容器——set/multiset 通常以红黑树(red-black tree)实现。

2016-02-29 20:29:00 1044 0

原创 STL 算法/容器——总论

不同算法所需的迭代器类型

2016-02-29 20:03:33 483 0

原创 标准模板库(STL)之 map 列传

1. 模板参数 2. 元素的插入与移除(inserting and removing) 3. 排序规则只返回true/false,map容器如何实现查重与去重 4. 迭代器类型

2016-02-29 17:23:51 920 0

原创 工具的使用 —— 键盘

如果一台计算机的基本外设发明的顺序是先有的键盘,后有的鼠标?一个自然的问题即是,在鼠标面试之前的人们是如何操作计算机的。人类走的如此之外,以至于常常忘记自己是从何而来。 开启鼠标键:Alt(左)+Shift(左)+Num Lock(位于数字键盘左上角)开启了鼠标键,我们就可以使用键盘以鼠标的方式进...

2016-02-29 16:29:44 596 0

原创 STL 中的容器们 (二)

STL 中的容器们 容器最后一个元素的迭代器我们知道容器: .begin():第一个元素coll[0]的迭代器 .end():最后一个元素之前的元素的迭代器 所以容器最后一个元素的迭代器为:coll.end()-1;序列式容器 vs 关联式容器 两大类型的容器的一大区别在于: 所谓序列式是允...

2016-02-28 21:53:34 423 0

原创 utilities —— 常见宏定义

C语言宏的特殊用法和几个坑 毫无疑问,宏的理解和运用是提升 C 程序效率的一大关键技术,也是评价一个 C 程序员的重要指标。本文将列举一些经典的宏函数,并给出其注意事项。 注意,宏不是函数,没有函数所对应的栈空间,宏仅仅是替换而已。 1. 宏的意义 (1)关于常量的宏定义,与枚...

2016-02-28 20:46:00 782 0

原创 可重入函数与不可重入函数

可重入:可重新进入,也即两次进入的现场一模一样?原文地址 什么是可重入函数和不可重入函数(转)在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。那么什么是可...

2016-02-28 16:22:11 438 0

转载 C语言宏的特殊用法和几个坑

原文请见 C语言宏的特殊用法和几个坑总结一下C语言中宏的一些特殊用法和几个容易踩的坑。由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之类)在别的编译器可能有细微差别,请参考相应文档。一、宏基础宏仅仅是在 C 预处理阶段的一种文本替换工具,编译完之后对二进制代码不可见(仅用于文本替换...

2016-02-28 16:15:39 947 0

原创 面向对象 —— 结构与设计

1. 模型类与控制类 让保存数据的类,仅用于数据的持有,除此之外,不向外界提供过多的修改接口(甚至是访问接口),修改(有时是访问)接口统一交由其控制类。举一个不恰当的例子,试卷类仅用于记录成绩,只有教师类(控制类)可对成绩进行一系列的修改和访问。 让控制类(操纵数据的类),仅用于操作动作(而不...

2016-02-28 12:04:42 693 0

原创 辨异 —— 单词(同义词)的辨异

football vs soccer

2016-02-28 09:52:25 621 0

原创 面向对象——意图与逻辑

编程语言中关键字的本质是什么?是向编译器传达一些信息。 何谓意图与逻辑这样古怪的词? 比如,对编译器而言,出现const修饰符,就是告诉(意图)编译器,“我不是左值,不可被修改,所有的修改动作都是非法的”。 1. virtual 同样对于一个类,在该类中兹要出现一次的virtual...

2016-02-27 21:54:05 743 0

原创 面向对象——面向客户端编程

面向对象的因果论,因为存在客户端关于客观事实的抽象(也即所需的类),类间的关系,以及各自的方法,我们才进行类的设计与实现。再次,回到客户端编程时,在主函数(main),在多类、且类间关系较为复杂的局面下,客户端调用时,如何创建不同类的对象?首先需要考虑的是,各类的物理意义(类来源于实际,而抽象于实...

2016-02-27 21:28:05 456 0

原创 工具的使用——windows操作系统的使用(二)

工具的使用——windows操作系统的使用 (1)域名解析文件的位置:C:/Windows/System32/drivers/etc/hosts (2)windows7 启动屏幕保护程序【桌面右键】⇒ 【个性化】 ⇒ 【屏幕保护程序】 (3)Linux vs Windows 关于分区(a)Wind...

2016-02-27 16:59:53 701 0

原创 C 程序的可移植性

不是说 C 语言是一门跨平台的语言吗?不尽然,不同的平台对C语言做了不同程度的支持和拓展,所谓的拓展即是在原有的C标准的基础上,又设计和实现了高层的api。 如果只在 windows 平台下开发,或者只在 linux 平台下开发,也即只在单一平台下开发,是不会遇到程序移植性的问题的。本文以wind...

2016-02-27 16:24:34 727 0

原创 C 标准库 —— scanf(fflush(stdin))

楔子#include <stdio.h>int main(int, char**) { int a; while (true) { fputs("please input an integer: ", stdout); ...

2016-02-27 16:14:47 531 0

原创 C 标准库—— assert.h

<assert.h>头文件

2016-02-27 11:18:09 491 0

原创 C 基础——指针函数与函数指针

一、指针函数的定义指针函数,顾名思义,返回指针的函数。其一般定义形式如下:类型名 *函数名(函数参数列表);其中,后缀运算符括号()表示这是一个函数,其前缀运算符星号*表示此函数为指针型函数,其函数返回值为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),类型名表示函数返回的指针指...

2016-02-27 08:59:31 391 0

转载 C基础——文本格式和二进制格式的区别

原文请见 深入:文本格式和二进制格式到底有什么不同?“信息”在机器层面是通过0和1的排列方式来体现的。可是这些0和1如何变成我们在windows环境下的记事本中看到的文本或者图片查看器中看到的图片呢?这里面就有一个编码的问题!所以,二进制文件和文本文件的不同就是编码层面的不同,二进制文件是值编码,...

2016-02-26 22:23:34 799 0

原创 C基础——fopen() 的 mode参数

FILE * fopen(const char * path,const char * mode);参数mode字符串则代表着流形态。 +:表示可读写,r+:rw,w+:wr,a+:ar b:以二进制形式 a:追加(append) mode 功能 文件存在的要求 r 打开只读文件 ...

2016-02-26 22:13:36 1276 0

原创 C++基础::文件流(二)

C++基础::文件流 字符串流与文件流的交互使用文件流的str()成员函数,将字符流中的数据转换为string类型,再使用<<或>>运算符,将字符串写到流里面;std::stringstream ss; ss << "hello " <...

2016-02-26 19:08:48 287 0

原创 utilities(C++)——错误提示

out of range filename is an invalid name.

2016-02-26 18:46:52 407 0

原创 C++基础::string(三)

basename 和扩展名(extension)的获得 文件名合法性的判断

2016-02-26 18:38:03 379 0

原创 word 的使用(四)—— 对齐与美观(表格)

隐藏段落标记:【文件】⇒ 【选项】⇒ 【显示】,取消段落标记; 表格0. 单元格的操作 拆分,合并; 1. 双栏 ⇒ 单栏将双栏状态下的表格,拷贝到单栏(正常)状态时,显然表格总体宽度,仅占一半: 选中表格, 右键; 【自动调整】⇒ 【根据窗口自动调整表格】 2. 调整单元格的宽度将鼠标置于两...

2016-02-26 09:51:30 2478 0

原创 for 循环的流程图等价形式

其实代码形式并未给出执行的流程顺序,反倒是其等价的流程图形式,简洁清晰:由图可知: 由菱形表示的表达式2,是一种逻辑判断(二分之) 表达式1,仅执行一次; 循环体的执行,必须在表达式2为真的前提下才可进行; 一旦不满足表达式2,循环立即退出;

2016-02-25 18:42:16 12361 0

原创 STL 中的容器们(四)

STL 中的容器们 find(查找)函数的返回值的判断对于 STL 容器的find成员函数(其实好像也只有set才支持find成员函数)或者字符串string丰富的查找接口(find、find_first_of、find_last_of。。。)以及<algorithm>提供的全局的fi...

2016-02-25 18:35:26 452 0

原创 提取单词并逆序输出

实现某一算法,需要哪些数据结构(string),这些数据结构需要支持怎样使用的接口(find\_first\_of,find\_first\_not_of),才是本文我们真正关注的内容。因为只有掌握了这些,才真正掌握了算法的实质,当不允许直接调用类似的库(对算法的某些环节支持得较为充分)时,依然心...

2016-02-25 18:14:23 775 0

原创 编程常见错误——循环中进行有符号数和无符号数的比较

不要轻视甚至无视,编译器所报的警告,警告不是错误,但比错误更加凶险。也即,我们要追求没有警告的程序。 本文,将以编译器经常会报的一个异常:warning C4018: “>=”: 有符号/无符号不匹配 为例说明忽视警告常会伴随一些古怪的结果发生

2016-02-25 17:42:40 1241 0

原创 C/C++基础::sizeof() 与 sizeof(string)

sizeof(string 对象) ≠ string 对象的.size()成员函数(.size()与.length()不作区别,返回 string 的字符个数) string 的实现在各库中可能有所不同,但在同一个库中相同的一点是,无论string里存放了多长的字符串,它们的sizeof()都是固...

2016-02-25 16:05:53 6633 2

原创 地道的表达(二)

地道的表达 FYI、PO 标点

2016-02-24 23:41:28 376 0

原创 C++基础::string(二)

1. 构造 接受char*作为单参构造,且该单参未被explicit修饰(赋值即构造) 2. 成员函数:.replace() 3. std::string::size_type 4. s[s.length()] 5. 搜索与查找

2016-02-24 19:59:25 432 0

原创 C++基础::字符串流(stringstream)

1. ss.clear() vs ss.str("") 2. str() 成员方法的返回值类型 3. 字符串流和文件流的交互 4. 字符串流的功能

2016-02-24 16:21:17 4950 0

原创 C++拾遗

1. static_cast<char> 前置声明(forward declaration)只给出声明,不提供实现(implementation),前置声明分为:类的前置声明;函数的前置声明; 字符串的拼接

2016-02-24 15:08:56 355 0

原创 工具的使用——电脑的认识与使用

键盘上的Shift与Alt1 Scroll Lock

2016-02-24 14:47:25 611 0

原创 C++基础::Stream(二)

C++基础::Stream std::endl vs ‘\n’1 The only difference is that std::endl flushes the output buffer, and '\n' doesn’t. If you don’t want the...

2016-02-24 14:41:45 519 0

原创 面向对象——私有成员

私有成员:私有成员变量,私有成员函数; 对私有成员变量和私有成员函数的认识 私有函数的存在,避免冗余代码; 私有成员变量和私有成员函数一样只开放给自己,所谓只开放给自己, 对私有成员函数而言,私有成员函数仅供当前类的其他私有成员函数以及公有函数调用,所以在设计与实现一个类时,应当优先设计一个类...

2016-02-24 14:23:34 1036 0

原创 如何通过父类引用“调用”子类所独有的方法

该做法的意义何在,姑且不论。今天我们主要关注该功能的实现,至少在实现的思路上是对面向对象思想的一次深入理解。 首先一点,父类引用是无法调用子类独有的方法(不仅无法访问,而且是不可见的),结论是显然的,不然该方法就不作为子类所独有了,不然子类就没有任何的独特之处了(隐私空间),也就丧失了子类存在的意...

2016-02-24 12:21:18 4278 0

原创 标准模板库(STL)之 vector 列传 (二)

1. 两种搭配 2. 容器为空的判断 3. 所能容纳的数据类型 4. push_back一个新元素 5. .resize() 的两个重载 6. .clear()的含义

2016-02-24 10:31:57 725 0

原创 C++基础::运算符重载

[][]:不在其内 楔子

2016-02-24 10:22:41 275 0

提示
确定要删除当前文章?
取消 删除