加锁和解锁,也可以在构造函数和析构函数里面,自动调用. 相等和等价的关系:等价是用在排序的时候,跟less函数有关. vector,deque,string 要用erase-remove组合:而关联容器,直接erase就可以了. copy(x.begin(), x.end(), ostream_iterator<string>(cout, "\n")); 但是如果x的类型是string*,就不行. 自定义一个print(const string*ps); 然后 for_ea…
Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set.multiset.map和multimap. 非标准STL序列容器: slist(单向列表)和rope(重型字符串?). 非标准STL关联容器: hash_set.hash_multiset.hash_map和hash_multimap.(c++11引入了unordered_set.unordere…
Effective STL 读书笔记 本篇文字用于总结在阅读<Effective STL>时的笔记心得,只记录书上描写的,但自己尚未熟练掌握的知识点,不记录通用.常识类的知识点. STL按照容器类型,可以分为标准序列容器(deque,vector,list,string),标准关联容器(map,multimap,set,multiset),另外,还有非标准容器,序列类型有slist和rope,关联类型有hash_**类相关容器.标准关联容器总是保持排列顺序. 在关联容器中,确保关联容器对于所使…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是,有时会发现生成的算法\(f(x)\)的错误率比较高,只使用这个算法达不到要求. 这时\(f(x)\)就是一个弱算法. 在以前学习算法的过程中,我们认识到算法的参数很重要,所以把公式改写成这样: \[ f(x,arguments) \\ where \\ \qquad x \text{ : calculated…
很早之前就听过这本书,找工作之前读一读.看了几页,个人感觉实在是生涩难懂,非常不符合中国人的思维方式.之前也有博主做过笔记,我来补充一些自己的理解. 我看有人记了笔记,还不错:http://www.360doc.com/content/12/0426/20/7899729_206769585.shtml 这位博主还写了more effective c++的读书笔记:http://bellgrade.blog.163.com/blog/static/83155959200863113228254/…
Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. Background 看了历史, 写第一篇笔记居然是2016年的事情了, 中间半途而废搁置了好长时间, 去年生病的时候捡起来看了一些, 今年终于看完了. 做这个笔记的目的主要是为了个人学习, 把一本书读薄, 也留下以后可以查阅翻阅的资料. 写博客这么多年, 我觉得有一个很大的好处是, 有时候会有一个…
本文内容包含以下章节: Chapter 2 AI Methods Chapter 2.1 General Notes 本书英文版: Artificial Intelligence and Games - A Springer Textbook 这个章节主要讨论了在游戏中经常用到的一些基础的人工智能算法.这些算法大部分都出现在一些人工智能和机器学习的入门书籍中.在讲解算法在游戏中的应用的时候,会以吃豆人(Ms Pac-Man)作为样例,讲解怎么用行为树算法,树搜索算法,监督学习算法,无监督学习算法…
vector - 会自动增长的数组 vector又称为向量数组,他是为了解决程序中定义的数组是不能动态改变大小这个缺点而出现的.一般程序实现是在类创建的时候同时创建一个定长数组,随着数据不断被写入,一旦数组被填满,则重新开辟一块更大的内存区,把原有的数据复制到新的内存区,抛弃原有的内存,如此反复.由于程序自动管理数组的增长,对于我们程序员来说确实轻松了不少,只管把数据往里面插就行了,当然把物理内存和虚拟内存插爆掉了就是操作系统来找你麻烦了:-)vector由于数组的增长只能向前,所以也只提供了后…
C++ 是一个难学易用的语言! [C++为什么难学?] C++的难学,不仅在其广博的语法,以及语法背后的语义,以及语义背后的深层思维,以及深层思维背后的对象模型: C++的难学还在于它提供了四种不同而又相辅相成的编程模型(programming paradigms): procedural-based(基于过程) object-based(基于对象) object-oriented(面向对象) generics(泛型) 在庞大复杂的机制下,万千使用者前仆后继的动力是:一旦学成,妙用无穷! [C+…
第一部分 让自己习惯C++ 条款01:视C++为一个语言联邦 一.要点 ■ c++高效编程守则视状况而变化,取决于你使用c++的哪一部分. 二.扩展 将c++视为一个由相关语言组成的联邦而非单一语言会帮助你更好的理解,其由c.object-oriented c++.template c++和stl四部分组成. 条款02:尽量以const,enum,inline替换#defines 一.要点 ■ 对于单纯变量,最好以const对象或enums替换#defines. ■ 对于形似函数的宏,最好改用i…