1# 有序vector 2 3## 概述 4### 简介 5提供了一个可以对插入元素自动排序的vector,具有添加元素,删除最后一个元素,合并vector等功能。 6## 涉及功能 7### class SortedVector 8#### 接口说明 9 10|返回类型 |名称 | 11| -------------- | -------------- | 12| | **SortedVector**()<br>构造函数。 | 13| | **SortedVector**(const SortedVector< TYPE, false >& rhs)<br>拷贝构造函数,不允许出现重复元素。 | 14| | **SortedVector**(const SortedVector< TYPE, true >& rhs)<br>拷贝构造函数,允许出现重复元素。 | 15| | **SortedVector**(const std::vector< TYPE >& orivect) | 16| virtual | **~SortedVector**()<br>析构函数。 | 17| ssize_t | **Add**(const TYPE& item)<br>在正确的位置添加一个新元素`item`。 | 18| const TYPE* | **Array**() const<br>返回一个指向vector的第一个元素的const指针,用于访问vector的元素。 | 19| const TYPE& | **Back**() const<br>返回vector末尾元素的引用。 | 20| iterator | **Begin**()<br>返回非const类型的vector起始元素的迭代器。 | 21| const_iterator | **Begin**() const<br>返回const类型的vector起始元素的迭代器。 | 22| size_t | **Capacity**() const<br>返回在分配新的存储空间之前能存储的元素总数。 | 23| void | **Clear**()<br>清空vector. | 24| TYPE* | **EditArray**()<br>返回一个指向vector的第一个元素的非const指针,用于访问vector的元素。 | 25| TYPE& | **EditItemAt**(size_t index)<br>返回vector的`index`对应的元素值。 | 26| iterator | **End**()<br>返回非const类型的vector末尾元素的迭代器。 | 27| const_iterator | **End**() const<br>返回const类型的vector末尾元素的迭代器。 | 28| iterator | **Erase**(size_t index)<br>如果`index`小于vector的size,就删除`index`处的元素。 | 29| const TYPE& | **Front**() const<br>返回vector起始元素的引用。 | 30| ssize_t | **IndexOf**(const TYPE& item) const<br>查找vector中元素值为`item`的索引。 | 31| bool | **IsEmpty**() const<br>返回vector是否为空。 | 32| size_t | **Merge**(const SortedVector< TYPE, AllowDuplicate >& sortedVector) | 33| size_t | **Merge**(const std::vector< TYPE >& invec)<br>将`invec`合并到`vec_`中。 | 34| const TYPE& | **MirrorItemAt**(ssize_t index) const<br>返回vector的元素值。 | 35| SortedVector< TYPE, AllowDuplicate >& | **operator=**(const SortedVector< TYPE, false >& rhs)<br>拷贝赋值运算符。 | 36| SortedVector< TYPE, AllowDuplicate >& | **operator=**(const SortedVector< TYPE, true >& rhs) | 37| const TYPE& | **operator[]**(size_t index) const<br>根据输入的索引去访问vector的元素。 | 38| size_t | **OrderOf**(const TYPE& item) const<br>查找应插入这个值为`item`的位置。 | 39| void | **PopBack**()<br>删除vector的最后一个元素。 | 40| ssize_t | **SetCapcity**(size_t size)<br>设置vector的capacity为`size`。 | 41| size_t | **Size**() const<br>返回vector的元素个数。 | 42 43## 使用示例 44 451. 示例代码(伪代码) 46 47```c++ 48#include <iostream> 49#include "../include/sorted_vector.h" 50 51using namespace OHOS; 52using namespace std; 53 54constexpr int SIZE = 4; 55 56int main() 57{ 58 vector<int> vec; 59 for (int i = 0; i < SIZE; i++) { 60 vec.push_back(i); 61 } 62 63 SortedVector<int, false> sv(vec); 64 65 vector<int> newVec; 66 newVec.push_back(7); 67 newVec.push_back(4); 68 newVec.push_back(3); 69 newVec.push_back(5); 70 newVec.push_back(6); 71 72 sv.Merge(newVec); 73 74 for (vector<int>::iterator it = sv.Begin(); it != sv.End(); it++) { 75 cout << "Merged result: " << *it << endl; 76 } 77 78 sv.Clear(); 79 cout << "Cleared size: " << sv.Size() << endl; 80} 81``` 82 832. 测试用例编译运行方法 84 85- 测试用例代码参见base/test/unittest/common/utils_sorted_vector_test.cpp 86 87- 使用开发者自测试框架,使用方法参见:[开发自测试执行框架-测试用例执行](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) 88 89- 使用以下具体命令以运行`sorted_vector.h`对应测试用例 90 91```bash 92run -t UT -tp utils -ts UtilsSortedVectorTest 93```