CANN/opbase SmallVector接口
small_vector【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase本章接口为预留接口后续有可能变更或废弃不建议开发者使用开发者无需关注。表 1接口列表接口定义功能说明PtrToValue(const void *const ptr)将void*型数据转换为uint64_t型。ValueToPtr(const uint64_t value)将uint64_t型数据转换为void*型。VPtrToValue(const std::vectorvoid * v_ptr)将vector容器中void*型元素转换为uint64_t型元素。PtrToPtr(TI *const ptr)任意类型指针变量指针地址不可修改转换为另一任意类型的指针变量。PtrToPtr(const TI *const ptr)任意类型指针变量指针地址和所指的值不可修改转换为另一任意类型的指针变量指针所指的值不可修改。PtrAdd(T *const ptr, const size_t max_buf_len, const size_t idx)当指针变量ptr不为空且idx小于max_buf_len返回指针地址ptr增加idx长度后的指针否则返回null。SmallVector(const allocator_type alloc Alloc())SmallVector默认构造函数。SmallVector(const size_type count, const T value, const allocator_type alloc Alloc())SmallVector构造函数初始化count个元素值为相同value。SmallVector(const size_type count, const allocator_type alloc Alloc())SmallVector构造函数带有count个初始元素。SmallVector(InputIt first, const InputIt last, const allocator_type alloc Alloc())SmallVector构造函数利用迭代器范围初始化元素。SmallVector(const SmallVector other)SmallVector拷贝构造函数深拷贝复制other中元素并存储在新的内存中。SmallVector(SmallVector other)SmallVector移动构造函数将已存在的vector对象资源移动到新创建的vector中。SmallVector(const std::initializer_listT init, const allocator_type alloc Alloc())SmallVector构造函数。clear()清空整个SmallVector。ClearElements()清空整个SmallVector并返回迭代器初始地址。FreeStorage()清空内存。at(const size_type index)返回SmallVector中index位置的元素的引用。front()返回SmallVector中第一个位置元素的引用。begin()返回一个迭代器指向SmallVector容器中第一个元素。back()返回SmallVector中最后一个位置元素的引用。rbegin()返回一个反向迭代器指向SmallVector容器中的最后一个元素。data()返回指向第一个元素的指针。GetPointer()返回指向第一个元素的指针。cbegin()返回一个const_iterator指向SmallVector容器第一个元素。cend()返回一个const_iterator指向SmallVector容器最后一个元素的下一个元素。crbegin()返回一个const_iterator指向SmallVector容器中最后一个元素。rend()返回一个反向迭代器指向SmallVector容器中第一个元素之前的元素该元素被视为其反向结束。crend()返回一个const反向迭代器指向SmallVector容器中第一个元素之前的元素该元素被视为其反向结束。size()返回SmallVector容器中元素的个数。reserve(const size_type new_cap)当new_cap大于已分配容量则更改容器容量要求为SmallVector容器的元素分配的存储空间的容量至少足以容纳返回已分配存储容量的大小个元素。capacity()返回已分配存储容量的大小。insert(const_iterator const pos, const T value)在SmallVector容器指定位置前插入元素。insert(const_iterator const pos, T value)在SmallVector容器指定位置前插入value元素value是浅拷贝。insert(const_iterator const pos, const size_type count, const T value)在SmallVector容器指定位置前插入count个值为value的元素。insert(const_iterator const pos, const InputIt first, const InputIt last)将指定元素范围[first, last)中的元素复制并插入到SmallVector容器指定位置前。insert(const_iterator const pos, const std::initializer_listT value_list)在SmallVector容器指定位置前插入T类型对象数组的所有元素。emplace(const_iterator const pos, Args ...args)将一个新元素直接插入到SmallVector容器中的pos之前该元素是通过args参数直接构造出来的。erase(const_iterator const pos)删除SmallVector容器指定位置的一个元素。erase(const_iterator const first, const_iterator const last)删除SmallVector容器指定范围[first, last)的元素。push_back(const T value)在SmallVector容器末尾加上一个元素。push_back(T value)在SmallVector容器末尾加上元素value元素value元素是浅拷贝。emplace_back(Args ...args)在SmallVector容器末尾插入一个元素该元素是通过args参数直接构造出来的。pop_back()删除SmallVector容器最后一个元素。resize(const size_type count)调整SmallVector容器大小为count。如果count小于当前容器大小则取前count个元素否则在容器后面使用默认构造函数增加相应的元素。resize(const size_type count, const T value)调整SmallVector容器大小为count。如果count小于当前容器大小则取前count个元素否则将value复制到增加的元素中。swap(SmallVector other)将SmallVector容器的内容与other SmallVector容器的内容交换。GetPointer(const size_type idx 0UL)返回指定位置的地址。InitStorage(const size_type size)初始化整个容器内存若size小于当前容量初始化当前容量大小的内存若size大于当前容量resize容器到size大小在初始化内存。CopyRange(T *iter, InputIt first, const InputIt last)拷贝[first, last)范围内存到迭代器iter位置。MoveFrom(SmallVector other)从other容器拷贝内存到当前容器。CheckOutOfRange(const size_type index)检查index是否超出容器范围。ExpandCap(const size_type range_begin, const size_type range_len)先申请一块新的内存大小为原容器容量加上range_len大小新容量不足原容量2倍则按2倍扩容。在原SmallVector容器range_begin的位置拓展range_len大小的内存并拷贝到新内存中释放原容器内存。ExpandSize(const size_type range_begin, const size_type range_len)在SmallVector容器中range_begin的位置拓展range_len大小的内存。Expand(const size_type range_begin, const size_type range_len)拓展SmallVector容器内存若拓展后大于容器最大容量按ExpandCap方式拓展否则按ExpandSize方式拓展。Shrink(const size_type range_begin, const size_type range_end)在SmartVector容器中删掉从range_begin到range_end之间的内存。swap(op::internal::SmallVectorT, N, Alloc sv1, op::internal::SmallVectorT, N, Alloc sv2)交换两个SmallVector容器sv1和sv2的元素。【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考