
c/c++
文章平均质量分 72
EverSteins
这个作者很懒,什么都没留下…
展开
-
enote笔记法的思考(ver0.2)
章节:enote笔记法的思考 enote笔记法,它是一种独特的文本标记方式与呈现方式。这一整套系统的记笔记的方法,它能够帮助我们对文本内容(例如,其中的概念、观点、思想等)更加直观和条理地进行理性思考和分析。无论哪种类型的书籍,你都可以用enote笔记法来做读书笔记,但该笔记法特别最适和于针对非常注重强调理性和逻辑、需要你需要动用许多思辨能力来严谨理性地思考的学术类或思想类书籍来做读书...原创 2018-12-11 21:18:12 · 402 阅读 · 0 评论 -
容器类(1)Vector(re迭代)
why使用vector,而不是内置数组(包括定长数组int[5],和动态数组int *arr=new int[n]):key:vector可以很大程度地避免下标越界,缓冲区溢出,内存泄露1)自动析构,因为是局部对象。因为是自动析构,所以不用关心释放问题了2)异常安全的一部分(evernote《TC++PL》读书笔记),同样也是因为是局部对象,定长数组也能自动析构,但不能动态分配3)小心原创 2013-11-27 00:53:12 · 817 阅读 · 0 评论 -
容器类(1)Vector(2)
《c++ primer》p80值初始化:如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化(value initializtiond)。这个由库生成的初始值将用来初始化容器中的每个元素。具体值为何,取决于存储在vector中元素的数据类型:1)如果vector保存内置类型(如int类型)的元素,那么标准库将用0值创建元素的初始化式:vector fvec原创 2013-11-27 00:58:19 · 695 阅读 · 0 评论 -
C++难点(1)——C++中的未定义行为
C++没有明确定义如何释放指向不是new分配的内存地址的指针。(p152,118)以下几种情况都可能引发运行时或编译时错误:1)结果未定义:delete不是new分配的空间 p1522)结果未定义,自由存储区可能被破坏:重复delete new分配的空间两次以上 p1533)结果未定义,至少会导致运行时少释放了内存空间,从而产生内存泄露(memory leak)。对于原创 2013-06-26 11:24:21 · 917 阅读 · 0 评论 -
归并排序(2)MergeSort顺序实现之非预分配内存
若有错误,诚请指正merge_sort.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/原创 2013-02-28 18:49:28 · 476 阅读 · 0 评论 -
《C++标准程序库》读书笔记
泛型why泛型:为了让库更一般化。比如find,可以将三样东西都参数化 1)查找对象的类型2)该对象在数据结构中的组织方式3)满足某某条件地查找仿函数p127,294what仿函数:定义了operator()的对象why仿函数:1)使泛型算法更一般化2)仿函数有自己的独特状态仿函数可以有不同的状态。原创 2012-07-31 07:50:18 · 509 阅读 · 0 评论 -
《泛型编程与STL》读书笔记
关键词:迭代器,函数配接器,迭代器之配接器(Iterator Adapters)iterator_traits迭代器的associated type是value_type,difference_type,reference_type,pointer_type,size_type,iterator_categoryiterator_tag是iterator_category所属(ty原创 2012-07-31 07:47:52 · 1129 阅读 · 0 评论 -
《C++ primer(第四版)》读书笔记7-第16章 模板与泛型编程
模板形参包含:类型形参,非类型形参类型形参:声明:typename(或class) T(标识符)使用时:具体类型如int非类型形参:声明:类型说明符(如int,size_t)使用时:常量表达式(如16)编写模板代码需注意:1)模板形参不能为空2)每个模板类型形参前面必须带上关键字class或typename,每个非类型形参前面必须带上类型原创 2012-05-29 21:23:21 · 664 阅读 · 0 评论 -
《TC++PL》读书笔记(re迭代)
p325Key:只有在一个对象的构造函数执行完成后,才被认为对象构建(contruct)成功。此后,也只有在此之后,stack unwinding时才为该对象调用析构函数。 一个由子对象组成的对象的构造,将一直持续到它所有的子对象都完成了构造工作 数组的构造一直持续到它的所有元素都构造完成,而且,只有那些构造完成的元素才会在stack unwindi原创 2014-02-27 06:21:52 · 1527 阅读 · 0 评论 -
泛型编程笔记(re迭代)
《c++ primer》p232what 函数匹配:将函数调用与候选函数集合中的一个函数相关连的过程函数匹配的3种可能:a)找到最佳匹配,编译成功b)找不到匹配,编译错误c)when 当存在多个与实参匹配的函数,但没有一个是明显的最佳选择。则编译错误,因为具有二义性why 要掌握函数匹配的步骤:1)编译成功,但意想不到的匹配结果 2)编译失败,因为有二义性w原创 2013-11-27 00:49:52 · 695 阅读 · 0 评论 -
enote笔记语言(3)(ver0.4)
章节:enote笔记语言(3)what&why(why not)&how&when&where&which:紫色,象征着神秘而又潜蕴着强大的力量,故取紫色。key&keyword:“2k”和以上的“5w1h”合称为“5w1h2k分析法”。棕色,大地泥土的颜色,给人一种朴实无华而又稳重可靠的感觉,故取棕色。重要概念or笔记者第一重点强调的“单词”(即,...原创 2018-04-21 19:50:14 · 353 阅读 · 0 评论 -
enote笔记语言(3)(ver0.3)
章节:enote笔记语言(3)what&why(why not)&how&when&where&which:紫色,象征着神秘而又潜蕴着强大的力量,故取紫色。key&keyword:“2k”和以上的“5w1h”合称为“5w1h2k分析法”。棕色,大地泥土的颜色,给人一种朴实无华而又稳重可靠的感觉,故取棕色。重要概念or笔记者第一重点强调的“单词”(即,...原创 2018-04-19 22:58:14 · 305 阅读 · 0 评论 -
电子笔记本的思考(1)(ver0.3)
章节:电子笔记本的思考(1)陶哲轩在《解题·成长·快乐——陶哲轩教你学数学》中着重强调,用纸笔来“缓存”思维对于数学解题的重要性:用选定的符号表达你所知道的信息,并画一个示意图。把所有信息写在纸上,有三点好处:a)解题时,便于思考;b)陷入困境时,可以盯着纸进行思考;c)把知道的写下来,这个过程本身可以激发新的灵感和联想。但请注意,不要写下过多的信息和细节。一种折中的办法是着重强调那些你认为最有用...原创 2017-12-07 09:38:38 · 479 阅读 · 0 评论 -
指针(1)智能指针(re迭代)
要知道什么是智能指针,首先了解什么称为 “资源分配即初始化”what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化”在《C++ Primer》这样解释的,“通过定义一个类来封装资源的分配和释放,可以保证正确释放资源”核心:C++98提供了语言机制:对象(【!值语意对象】)在超出作用域,,析构函数会被自动调用 【如原创 2013-12-28 01:01:46 · 873 阅读 · 0 评论 -
指针(2)指针常见问题(re迭代)
空悬指针(dangling pointer):指向已经销毁的对象或已回收的地址(《Linux多线程服务端编程》p7)野指针(wild pointer):未经初始化的指针Linux多线程服务端编程》p15C++里可能出现的内存问题:1.缓冲区溢出(buffer overrun)2.空悬指针/野指针3.重复释放(double delete)4.内存泄露(memory原创 2013-12-28 01:03:31 · 769 阅读 · 0 评论 -
指针(4)智能指针的使用
why shared_ptr:1)如果指针作为类成员时,使用shared_ptr封装原始指针,解决了复制类对象出现的问题(相较原始指针)。 如果是非内存资源(比如:互斥器),可以在构造时再传一个删除器(deleter)参数(shared_ptr可以,auto_ptr不能),因为shared_ptr缺省行为是“当引用计数为0时,删除其所指物”,那不是我们所想要的行为。2)用于函数内部原创 2014-05-27 02:35:58 · 809 阅读 · 0 评论 -
指针(3)智能指针总览
scoped_ptr不能被复制,shared_ptr能复制:使用boost::scoped_ptr的时候必须注意,它不允许进行复制操作,一旦声明了一个指向某内存空间的指针,那么就不可以通过another_p = p;的方式来分配内存空间的新所有权。 auto_ptr不能指定删除器(因而不能管理内存之外的其他资源),shared_ptr能指定删除器 [上述Comm原创 2014-06-28 23:07:48 · 531 阅读 · 0 评论 -
《C++程序设计原理与实践》读书笔记
p292 ,302what 抽象类:只能用作其他类的基类。我们使用抽象类来表示那些抽象的概念,即相关实体共性的一般化所对应的那些概念what 抽象类的另一种解释 《effective c++》电子版p175:另一个制作Handle class的办法是,令类成为一种特殊的抽象基类(abstract base class),称为Interface class。这种class的目的是详细一一描述原创 2014-06-28 23:09:52 · 933 阅读 · 0 评论 -
List(2)List的顺序实现
list.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ templateclass Lis原创 2012-05-29 21:13:10 · 704 阅读 · 0 评论 -
BinarySearchTree(1)二叉查找树链式递归实现
binary_search_tree.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/#ifndef BINAR原创 2012-05-29 20:56:59 · 463 阅读 · 0 评论 -
《C++ primer(第四版)》读书笔记8-第9章 顺序容器
容器,顺序容器表示迭代器范围的beg,end,其范围是左闭合区间。end不是指向元素范围的最后一个元素,而是指向最后一个元素的下一位置。如果两个迭代器相等,则迭代器范围为空如果vector为空,begin返回的迭代器与end返回的迭代器相同访问容器的方式:下标,迭代器所有标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。由于通用性,一般都使用迭代原创 2012-05-29 21:25:28 · 450 阅读 · 0 评论 -
快速排序(1)QuickSort顺序实现1
若有错误,诚请指正quick_sort.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/#if原创 2011-12-31 21:52:58 · 485 阅读 · 0 评论 -
List(1)List单链表的链式实现
若有错误,诚请指正list.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ #ifndef原创 2011-12-31 21:31:41 · 569 阅读 · 0 评论 -
归并排序(1)MergeSort顺序实现之非递归预分配内存
若有错误,诚请指正merge_sort.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/原创 2011-12-31 21:40:15 · 751 阅读 · 0 评论 -
C++ primer(第四版)读书笔记5
定义变量也是声明。可以通过使用extern关键字声明变量名而不定义它: p46extern int i; //declares but does not define iint i //declares and defines iextern声明不是定义,也不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。原创 2012-01-20 20:49:08 · 409 阅读 · 0 评论 -
C语言的一些琐碎细节备忘
主函数min()必须返回为int,不能定义为void main(),只能定义为main()(默认返回int)或int main(),不是新标准,而是任何一届标准变量声明不能放在for()中不许这样写:int i;for (i=0;ichar message[]="now is the time";与char *pmessage="now is the t原创 2012-01-07 21:06:07 · 354 阅读 · 0 评论 -
《C++ primer(第四版)》读书笔记4-编码规范
编写良好的泛型代码(534)编写模板代码时,对实参类型的要求尽可能少是有益的1)模板的形参是const引用(可以支持那些不支持复制构造函数类型的类;对于大类型对象,速度更快,因为不是复制整个对象传递)2)函数体中的测试只用C++程序员应习惯于优先使用!=而不是C++程序员经常会遇到标准库的内容。标准库中的类及泛型算法大多定义为模板类及模板函数,它们的原创 2011-12-08 10:34:10 · 591 阅读 · 0 评论 -
C++ primer(第四版)读书笔记1
c++的函数传递引用与指针的区别。 以我的理解。引用的本质原理就是指针,引用相当于指针常量(比如int引用作用相当于int *const)。之所以c++设计了引用的概念。除了语法便捷,使用起来更加方便外(不用一直*)。也更加安全,不会再复制其他值给该引用,使它指向其他对象。 c++ primer解释引用与指针的区别:共同点: 虽然使用引用和指针原创 2011-10-24 20:07:06 · 518 阅读 · 0 评论 -
C++ primer(第四版)读书笔记3
what explicit构造函数:用单个形参的构造函数,如果加了explicit关键字,则无法完成从形参类型到该类型的一个隐式转换。通常单个形参的构造函数应该声明为explicit,除了拷贝构造函数。不过,拷贝构造函数和赋值构造函数除非需要,一般也设为privateexplicit则只能在内部声明,而不能在外部声明声明为explicit后,尽管不能再隐式创建对象,但可原创 2011-11-12 14:38:19 · 493 阅读 · 0 评论 -
《C++ primer(第四版)》读书笔记6
第18章. 特殊工具与技术注意:new表达式,placement new表达式,delete表达式,operator new 和 operator delete标准库函数之间的区别a:operator new 和 operator delete标准库函数只是new和delete表达式操作的第一步(见下)。而placement new负责构造对象。可以通过改写类成员o原创 2012-02-12 22:48:17 · 604 阅读 · 0 评论 -
插入排序(1)InsertionSort
main.cc/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ #include "stdafx.h"#i原创 2012-04-30 01:39:05 · 501 阅读 · 0 评论 -
List(3)List的单链式实现的增强版(保留当前位置)
list.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ typedef int ElemTy原创 2012-05-29 21:17:45 · 509 阅读 · 0 评论 -
BinarySearchTree(2)二叉查找树链式非递归实现
binary_search_tree.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ #ifn原创 2012-05-29 21:04:21 · 448 阅读 · 0 评论 -
堆排序(1)HeapSort
heap_sort.h#ifndef HEAP_SORT_H#define HEAP_SORT_H#include "utility.h"typedef int ElemType;class Sort{public: static void HeapSort(ElemType *arr,size_t n);private: static void BuildMa原创 2012-04-30 02:13:08 · 439 阅读 · 0 评论 -
归并排序(2)MergeSort临时分配内存
merge_sort.h/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ #ifndef MERGE_原创 2012-04-30 02:06:07 · 485 阅读 · 0 评论 -
冒泡排序(1)BubbleSort
main.cc/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ #include "stdafx.h原创 2012-04-30 01:35:05 · 429 阅读 · 0 评论 -
选择排序(1)SelectionSort
main.cc/*----------------------------------------------- Created By EverSteins Email:EverSteins@gmail.com 转载请注明出处 ------------------------------------------------*/ #include "stdafx.h"#原创 2012-04-30 01:32:17 · 439 阅读 · 0 评论 -
C++ primer(第四版)读书笔记2
C++没有明确定义如何释放指向不是new分配的内存地址的指针。(p152,118)以下几种情况都可能引发运行时或编译时错误:1)delete不是new分配的空间2)重复delete new分配的空间两次以上3)在释放动态数组时忘了方括号对 int i; int *pi=&i; delete pi; //vs 2008会运行时错误原创 2011-11-12 14:32:48 · 406 阅读 · 0 评论