摘要: 标准C++的世界是相当保守和陈旧的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有其他进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是它将因实现而不同。 在STL 阅读全文
posted @ 2018-11-23 10:06 KidyCharon 阅读(241) 评论(0) 推荐(0)
摘要: 还没理解。。。。。。 回头再来 阅读全文
posted @ 2018-11-23 09:10 KidyCharon 阅读(185) 评论(0) 推荐(0)
摘要: 去除一个容器中有特定值的所有对象: 如果容器是 vector、string 或 deque,使用 erase-remove惯用法 c.erase( remove( c.begin(), c.end() , val), c.end() ); // remove() 函数,将值不为 val 的元素前移, 阅读全文
posted @ 2018-11-22 21:04 KidyCharon 阅读(161) 评论(0) 推荐(0)
摘要: 当拷贝一个 auto_ptr 时,auto_ptr 所指向对象的所有权被转到拷贝的 auto_ptr,而被拷贝的 auto_ptr 被设为 NULL。 拷贝一个 auto_ptr 将改变它的值,不要建立 auto_ptr 容器: vector< auto_ptr<Widget> > // Don`t 阅读全文
posted @ 2018-11-22 19:51 KidyCharon 阅读(138) 评论(0) 推荐(0)
摘要: STL 容器非常优秀。它们提供了前向和逆向遍历的迭代器(通过 begin、end、rbegin等);它们能告诉你所容纳的对象的类型(通过 value_type 和 typedef);在插入和删除中,它们负责任何需要的内存管理;它们报告容纳了多少对象和最多容纳的数量(分别通过 size 和 max_s 阅读全文
posted @ 2018-11-22 19:38 KidyCharon 阅读(201) 评论(0) 推荐(0)
摘要: 声明一个函数 fun 带有一个 double 而且返回一个 int: 声明一个函数 gun 带有一个参数,参数指向一个没有参数、返回 double 的函数指针: Tip: C++ 里面的一条通用规则—— 几乎任何东西都可能被分析成函数声明 用括号包含一个实参声明是不合法的,但用括号包围一个函数调用的 阅读全文
posted @ 2018-11-22 18:47 KidyCharon 阅读(157) 评论(0) 推荐(0)
摘要: 秦王使人谓安陵君曰:“寡人欲以五百里之地易安陵,安陵君其许寡人!” 安陵君曰:“大王加惠,以大易小,甚善;虽然,受地于王,愿终首之,弗感易!” 秦王不悦。安陵君因使唐雎使于秦。 秦王谓唐雎曰:“寡人以五百里之地易安陵,安陵君不听寡人,何也?且秦灭韩亡魏,而君以五十里之地存者,以君为长者,故不错意也。 阅读全文
posted @ 2018-11-22 17:55 KidyCharon 阅读(275) 评论(0) 推荐(0)
摘要: 给定两个vector,v1和v2,使v1的内容和v2的后半部分一样的最简单的方式是什么? v1.assign( v2.begin() + v2.size()/2, v2.end() ); 两点说明: 1. assign成员函数对于所有标准序列容器(vector、string、deque和list)都 阅读全文
posted @ 2018-11-22 15:38 KidyCharon 阅读(182) 评论(0) 推荐(0)
摘要: 对于方法 empty() 和 size() 应该首选 empty() 的构造, 理由很简单: 对于所有的标准容器,empty是一个常数时间操作,但对于一些 list 实现,size花费线性时间。 list::splice 实现 list 拼接的功能,将源 list 的内容部分或全部元素删除,拼插入到 阅读全文
posted @ 2018-11-22 14:23 KidyCharon 阅读(229) 评论(0) 推荐(0)
摘要: 对于容器容纳对象、从容器中获取对象,STL的方式—— 拷进去、拷出来。 对象通过使用它的拷贝成员函数来拷贝: 特别是它的复制构造函数和它的赋值操作符(=) Widget( const Widget & ); Widget & operator = ( const Widget & ); 分割问题暗示 阅读全文
posted @ 2018-11-22 14:18 KidyCharon 阅读(154) 评论(0) 推荐(0)