-
C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope - [STL]
2008-03-28
C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope
许式伟
2008-3-20 概要在介绍StdExt的时候,我曾经提到,STL设计精良,但是以下几块仍然设计不足(或缺失):
allocator(内存管理) string(字符串处理/文本处理) parallel programming(并行编程)关于内存管理,我们已经说得很多了。这里我们重点谈的是字符串处理/文本处理相关的问题。本篇是《字符串处理完整参... -
C/C++字符串处理(2):String - 常字符串 - [STL]
2008-03-28
C/C++字符串处理(2):String - 常字符串
许式伟
2008-3-23
unfold
Table of Contents概要理解String(BasicString)关于TempString基类源码参考阅读
概要我们知道,C++标准库(STL)提供了string(basic_string)类进行字符串操作。字符串很可能除了内存分配器(allocator)1外使用最为频繁的STL类。但是C++社区对string的指责从来就没有停止过。... -
C/C++字符串处理(3):String ADT - 字符串只是抽象数据类型 - [STL]
2008-03-28
C/C++字符串处理(3):String ADT - 字符串只是抽象数据类型
许式伟
2008-3-26
概要字符串是什么?我们认为,与其说它是一个类,不如说它只是一个ADT(抽象数据类型)。
目前C++中的字符串类目前广泛采用的C++字符串类有二:std::string(basic_string,由STL提供)、CString(由MFC或者WTL提供)。它们的实现非常类似,都是带引用计数的、基于线性数据结构的字符串。不过SGI STL... -
C/C++字符串处理(4):std::vector与std::StringBuilder - [STL]
2008-03-28
C/C++字符串处理(4):std::vector与std::StringBuilder
许式伟
2008-3-28
引子std::StringBuilder 基于 std::vector 实现。所以尽管本文讨论 std::vector,但是所有的结论对 std::StringBuilder 同样有效。
实现概要简单来讲,std::vector 是一个动态数组,管理的是一块线性的、可动态增长的内存。
如何加速 st... -
STL函数(下)排序和相关操作
函数
说明
sort()
对区间进行排序
stable_sort()
对区间进行排序,并保留相同元素的相对顺序
partial_sort()
对区间进行部分排序,提供完整排序的前n个元素
partial_sort_copy()
将经过部分排序的区间复制到另一个区间... -
STL函数(上)非修改式序列操作
函数
说明
for_each()
将一个非修改式函数对象用于这个区间中的每个成员国
find()
在区间中查找某个值首次出现的位置
find_if()
在区间中查找第一个满足断言测试条件的值
find_end()
在序列中查找最后一个与另一个序列匹配的值。匹配时... -
vector,deque,list技术编程详解 - [STL]
2007-12-04
vector,deque,list技术编程详解
1)
//bool empty() const;
//判断序列是否为空
2)
//begin, end
//const_iterator begin() const;
&nb... -
set 和,multiset, map和multimap 技术编程详解 - [STL]
2007-12-04
set 和,multiset, map和multimap 技术编程详解
1)
//bool empty() const;
//判断集合是否为空
2)
//begin, end
//const_iterator begin() const;
&nb... -
迭代器的类型
1)输入迭代器
2)输出迭代器
3)正向迭代器
4)双向迭代器
5)随机访问迭代器
迭代器性能
迭代器功能
输入
输出
正向
双向
随机访问
解除引用读取
√
×
√
... -
尽量用iterator代替const_iterator(3) - [STL]
2007-11-30
事实表明,把const迭代器映射为迭代器是病态的。 我们并不会就这样束手无策,有一种安全的、可移植的方法获取它所对应的iterator[,而且,用不着陷入类型系统的转换。下面是解决思路的本质,虽然在它编译前还要稍作修改:
typedef deque<int> IntDeque; // 和以前一样
type...







