# 有序vector ## 概述 ### 简介 提供了一个可以对插入元素自动排序的vector,具有添加元素,删除最后一个元素,合并vector等功能。 ## 涉及功能 ### class SortedVector #### 接口说明 |返回类型 |名称 | | -------------- | -------------- | | | **SortedVector**()
构造函数。 | | | **SortedVector**(const SortedVector< TYPE, false >& rhs)
拷贝构造函数,不允许出现重复元素。 | | | **SortedVector**(const SortedVector< TYPE, true >& rhs)
拷贝构造函数,允许出现重复元素。 | | | **SortedVector**(const std::vector< TYPE >& orivect) | | virtual | **~SortedVector**()
析构函数。 | | ssize_t | **Add**(const TYPE& item)
在正确的位置添加一个新元素`item`。 | | const TYPE* | **Array**() const
返回一个指向vector的第一个元素的const指针,用于访问vector的元素。 | | const TYPE& | **Back**() const
返回vector末尾元素的引用。 | | iterator | **Begin**()
返回非const类型的vector起始元素的迭代器。 | | const_iterator | **Begin**() const
返回const类型的vector起始元素的迭代器。 | | size_t | **Capacity**() const
返回在分配新的存储空间之前能存储的元素总数。 | | void | **Clear**()
清空vector. | | TYPE* | **EditArray**()
返回一个指向vector的第一个元素的非const指针,用于访问vector的元素。 | | TYPE& | **EditItemAt**(size_t index)
返回vector的`index`对应的元素值。 | | iterator | **End**()
返回非const类型的vector末尾元素的迭代器。 | | const_iterator | **End**() const
返回const类型的vector末尾元素的迭代器。 | | iterator | **Erase**(size_t index)
如果`index`小于vector的size,就删除`index`处的元素。 | | const TYPE& | **Front**() const
返回vector起始元素的引用。 | | ssize_t | **IndexOf**(const TYPE& item) const
查找vector中元素值为`item`的索引。 | | bool | **IsEmpty**() const
返回vector是否为空。 | | size_t | **Merge**(const SortedVector< TYPE, AllowDuplicate >& sortedVector) | | size_t | **Merge**(const std::vector< TYPE >& invec)
将`invec`合并到`vec_`中。 | | const TYPE& | **MirrorItemAt**(ssize_t index) const
返回vector的元素值。 | | SortedVector< TYPE, AllowDuplicate >& | **operator=**(const SortedVector< TYPE, false >& rhs)
拷贝赋值运算符。 | | SortedVector< TYPE, AllowDuplicate >& | **operator=**(const SortedVector< TYPE, true >& rhs) | | const TYPE& | **operator[]**(size_t index) const
根据输入的索引去访问vector的元素。 | | size_t | **OrderOf**(const TYPE& item) const
查找应插入这个值为`item`的位置。 | | void | **PopBack**()
删除vector的最后一个元素。 | | ssize_t | **SetCapcity**(size_t size)
设置vector的capacity为`size`。 | | size_t | **Size**() const
返回vector的元素个数。 | ## 使用示例 1. 示例代码(伪代码) ```c++ #include #include "../include/sorted_vector.h" using namespace OHOS; using namespace std; constexpr int SIZE = 4; int main() { vector vec; for (int i = 0; i < SIZE; i++) { vec.push_back(i); } SortedVector sv(vec); vector newVec; newVec.push_back(7); newVec.push_back(4); newVec.push_back(3); newVec.push_back(5); newVec.push_back(6); sv.Merge(newVec); for (vector::iterator it = sv.Begin(); it != sv.End(); it++) { cout << "Merged result: " << *it << endl; } sv.Clear(); cout << "Cleared size: " << sv.Size() << endl; } ``` 2. 测试用例编译运行方法 - 测试用例代码参见base/test/unittest/common/utils_sorted_vector_test.cpp - 使用开发者自测试框架,使用方法参见:[开发自测试执行框架-测试用例执行](https://gitee.com/openharmony/testfwk_developer_test#%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E6%89%A7%E8%A1%8C) - 使用以下具体命令以运行`sorted_vector.h`对应测试用例 ```bash run -t UT -tp utils -ts UtilsSortedVectorTest ```