news 2026/5/10 3:49:54

CANN/opbase SmallVector接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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::vector<void *> 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_list<T> 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_list<T> 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::SmallVector<T, N, Alloc> &sv1, op::internal::SmallVector<T, N, Alloc> &sv2)交换两个SmallVector容器sv1和sv2的元素。

【免费下载链接】opbase本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 3:42:00

大模型架构拆解:从零件到整体,带你秒懂重复的精密艺术

本文通过拆解大模型架构&#xff0c;阐述了其重复但精密的结构特点。核心内容分为输入层、核心层和输出层三部分&#xff0c;其中核心层由N个标准模块重复堆叠构成&#xff0c;每个模块包含自注意力模块和MLP前馈网络&#xff0c;负责理解语言关系和深化语义。文章强调理解整体…

作者头像 李华
网站建设 2026/5/10 3:40:40

Godot 4双网格瓦片地图系统:解耦逻辑与渲染的进阶实践

1. 项目概述&#xff1a;一个为Godot 4设计的双网格瓦片地图系统如果你在Godot引擎里做过2D游戏&#xff0c;尤其是那种需要复杂地形、多层结构或者动态拼接的地图&#xff0c;那你肯定没少跟TileMap节点打交道。Godot自带的瓦片地图系统功能强大&#xff0c;但有时候&#xff…

作者头像 李华
网站建设 2026/5/10 3:38:46

Kubernetes大模型部署革命:OME Operator如何实现LLM服务化智能编排

1. 项目概述&#xff1a;当Kubernetes遇上大模型&#xff0c;OME如何重塑LLM服务化如果你和我一样&#xff0c;在Kubernetes上折腾过几次大模型&#xff08;LLM&#xff09;的部署&#xff0c;大概率会经历一个从兴奋到头疼的过程。一开始&#xff0c;你可能觉得这不就是拉个镜…

作者头像 李华
网站建设 2026/5/10 3:37:46

从Hello World到olleh:极简开源项目的工程实践与文化价值

1. 项目概述&#xff1a;一个反向“Hello World”的诞生如果你在GitHub上搜索过一些有趣的仓库&#xff0c;或者对开发者文化中的“彩蛋”有所了解&#xff0c;那么你很可能见过mattt/olleh这个项目。它的名字本身就充满了趣味性&#xff1a;olleh是hello的反向拼写。这个项目&…

作者头像 李华
网站建设 2026/5/10 3:36:34

Linux下Cursor编辑器试用重置脚本原理与风险分析

1. 项目概述与核心思路拆解 最近在折腾Linux下的代码编辑器&#xff0c;Cursor以其深度集成的AI能力确实吸引了不少开发者。但它的免费试用期结束后&#xff0c;弹窗提醒和功能限制就变得有些恼人。网上有不少关于如何“重置”或“延长”其使用状态的讨论&#xff0c;其中一种思…

作者头像 李华