摘要: 基本二分查找 在有序数组中查找一个元素,我们常常使用二分法进行查找。 理解二分法很简单,但是写对一个二分查找并不容易,边界问题是最大难题。 二分查找: 从数组nums中找到目标值target,返回其下标,没有则返回-1 从数组中找到一个中点mid 如果nums[mid] = target,则返回 如 阅读全文
posted @ 2021-04-25 10:54 煜恒 阅读(203) 评论(0) 推荐(0)
摘要: Item 53 不要轻忽编译器警告 C++警告信息可能指向的是一个错误,虽然没有报error 比如: class B { public: virtual void f() const; }; class D : public B { public: virtual void f(); }; 编译器可 阅读全文
posted @ 2021-02-22 16:19 煜恒 阅读(111) 评论(0) 推荐(0)
摘要: C++没有内置的垃圾回收机制,它需要程序员手工管理内存。因此需要掌握分配和回收(operator new和 operator delete) 多线程下访问同一heap空间,如果没有设置同步机制,可能导致数据败坏,此外 对于operator new 和 operator delete只适合用来分配单一 阅读全文
posted @ 2021-02-22 16:17 煜恒 阅读(121) 评论(0) 推荐(0)
摘要: Item 32 确定你的public继承是is-a关系 什么是is-a关系? 如果你令class Drived以public形式继承class Base,你便是告诉C++编译器,每一个类型为Drived的对象都是类型为Base的对象。 也就是说,Base比Drived表现出更一般化的概念,Drive 阅读全文
posted @ 2021-01-11 17:53 煜恒 阅读(168) 评论(0) 推荐(0)
摘要: Item 26 尽可能延后变量定义式的出现时间 只要你定义了一个变量而且变量的类型带有一个构造函数和析构函数,那么当程序的控制流到达这个变量的定义式时,你得承担构造成本,当这个变量离开其作用域时,你得承担析构成本。即使这个变量最终未被使用,仍需耗费这些成本,所以应该尽量避免这种情形。 或许你会认为, 阅读全文
posted @ 2021-01-11 17:50 煜恒 阅读(285) 评论(0) 推荐(0)
摘要: Item 18 : 让接口容易被正确使用,不易被误用 这一规则似乎没那么专精,但它可能是C++接口最重要的一个设计准则。 接口时客户与你的代码互动的手段,如果客户使用某个接口,没有获得客户预期的行为,那么这个代码不应该通过编译,换句话说,如果这个代码通过编译,它的功能即客户所需。 作为设计者,必须考 阅读全文
posted @ 2021-01-11 17:23 煜恒 阅读(125) 评论(0) 推荐(0)
摘要: 资源的一个特点是:使用完后必须还给系统。如果不归还糟糕的事情就会发生。 C++程序常见的使用资源有: 动态分配内存 文件描述符(file descriptors) 互斥锁(mutex locks) 图形界面的字型、笔刷 数据库连接 网络sockets 比如动态分配的内存,如果不归还,会导致内存泄漏。 阅读全文
posted @ 2021-01-11 16:26 煜恒 阅读(230) 评论(0) 推荐(0)
摘要: item5 : 了解C++ 默默编写并调用了哪些函数 编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment运算符,以及析构函数。 需要注意几点: 这里是可以,而不是必然,在某些条件下不会生成default构造函数,比如: 基类没有default构造函 阅读全文
posted @ 2021-01-11 15:44 煜恒 阅读(132) 评论(0) 推荐(0)
摘要: 读Effective C++的笔记,感谢指正,愿你我皆有收获。 Item1 : 视C++为一个语言联邦 C Object-Oriented C++ Template C++ STL C可视为4个次级语言的组合,当你从次级语言中切换,高效编程守则会要求你改变策略。 比如: 在基于C的设计中,内置类型通 阅读全文
posted @ 2021-01-06 19:21 煜恒 阅读(99) 评论(0) 推荐(0)