Android Utils 之 Vector 学习笔记(二)—— SortedVectorImpl 代码分析

本文是 Android Vector 学习笔记的第二部分,聚焦于 SortedVectorImpl 类的详细分析。主要内容包括类定义、查找和合并函数的实现,特别是如何利用二分查找优化排序 Vector 的查找效率,以及在不同情况下如何正确合并两个排序好的 Vector。
摘要由CSDN通过智能技术生成

上一篇笔记中,分析了最底层的抽象类 VectorImpl 中的几个重点函数实现方法。可以看到在那个类中,基本上所有 Vector 应有的操作都已经实现好了。
SortedVectorImpl 则基于此,又针对 Sorted 这一特性而增加了一些底层操作,接下来就分析分析相关的代码实现。


相关文章


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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值