上一篇笔记中,分析了最底层的抽象类 VectorImpl
中的几个重点函数实现方法。可以看到在那个类中,基本上所有 Vector 应有的操作都已经实现好了。
而 SortedVectorImpl
则基于此,又针对 Sorted 这一特性而增加了一些底层操作,接下来就分析分析相关的代码实现。
相关文章
- Android Utils 之 Vector 学习笔记(一)—— VectorImpl 代码分析
- Android Utils 之 Vector 学习笔记(二)—— SortedVectorImpl 代码分析
- Android Utils 之 Vector 学习笔记(三)—— Vector 与 SortedVector 代码分析
- Android Utils 之 Vector 学习笔记(四,完结)—— KeyedVector 与 DefaultKeyedVector 代码分析
SortedVectorImpl
类定义
文件路径:system\core\libutils\include\utils\VectorImpl.h
概览:
indexOf
(第 11 行):用于查找指定元素的位置。orderOf
(第 14 行):用于确定元素应插入的位置。add
(第 17 行):用于将元素加入 Vector 中正确的位置(如果已经有了,则覆盖)。merge
(第 20、21 行):用于合并 Vector。remove
(第 24 行):用于删除指定元素。do_compare
(第 27 行):纯虚函数,留给子类实现,应是用于确定比较规则的函数。_indexOrderOf
(第 30 行):用于确定元素应插入的位置(orderOf
的具体实现),其返回值表示元素所在位置(若无此元素则返回错误码),而参数order
则返回所求的位置。- 第 34~45 行:定义了关于增删查找之类的基本操作,但注释有提到,这些函数不会进行实现,因为它们在
SortedVector
这样的结构中不会提供给外部使用。
class SortedVectorImpl : public VectorImpl
{
public:
SortedVectorImpl(size_t itemSize, uint32_t flags);
explicit SortedVectorImpl(const VectorImpl& rhs);
virtual ~SortedVectorImpl();
SortedVectorImpl& operator = (const SortedVectorImpl& rhs);
//! finds the index of an item
ssize_t indexOf(const void* item) const;
//! finds where this item should be inserted
size_t orderOf(const void* item) const;
//! add an item in the right place (or replaces it if there is one)