摘要: C 有 null-end string, C++有std::string, 各有千秋。 C字符串 以 zero 作为终止符,所有字符串操作,都需要判断这个终止符;这也是每个字符串操作,都需要重新知道字符串长度,这很冗余。解决办法有,手动保持字符串长度,调用呆长度的C字符串函数。 std::string C++的string试图解决C的问题,并把内存管理包揽了。在大多数情形下,这都不是问题。但当你不需要它管理内存时,没有了办法。比如字符串常量(继承C导致的问题),比如一个请求包中子串(包的周期很长)。 C++ string不够好,那么可以定义一个,不需要管理内存的string, 只提供便利操 阅读全文
posted @ 2010-12-06 21:10 napoleon_liu 阅读(1039) 评论(0) 推荐(0) 编辑
摘要: Effective STL中说过,std::map 是一个比较通用的实现,如果你注重效率的话,Hash容器 是个更好的选择,如果你的操作,主要是(先插入数据,查找,最后删除),那么用vector来实现map,效率也会更高。 从效率的角度看,map只适合那种,需要不断插入和删除,期间夹杂查找的情形。 vector_map 为什么比map效率高 vector是线性存储,map是二叉树树形,所以vector内存访问的局部性更好 vector, 一次分配一个比较大的空间(2^n的分配方式), map每次都需要 new 或delele 一个树结点, 内存分配是很耗时的。 vector_map, 可以在 阅读全文
posted @ 2010-12-06 20:29 napoleon_liu 阅读(6506) 评论(1) 推荐(1) 编辑