当前位置: 首页 > news >正文

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),仅供参考

http://www.jsqmd.com/news/787056/

相关文章:

  • 2025年东莞高职院校深度解析:广东酒店管理职业技术学院凭什么成为本地学子首选? - 品牌策略师
  • 2026年4月市面上诚信的复叶槭批发基地种植推荐,紫薇/红叶李/金森女贞/丝棉木/苗木/红叶石楠,复叶槭批发基地种植推荐 - 品牌推荐师
  • 申请高新技术企业需要几个专利?有要求吗?
  • 终极输入法词库转换指南:3分钟搞定20+输入法格式迁移
  • Python如何下载文件:从基础到进阶的完整指南
  • Godot 4双网格瓦片地图系统:解耦逻辑与渲染的进阶实践
  • APC:统一管理AI编程工具配置,告别配置孤岛与同步困境
  • Video DownloadHelper CoApp终极指南:从零开始高效下载与转换视频
  • DeepSeek-TUI:终端里的 AI 编码 Agent
  • Lumberjack Theme:基于TypeScript引擎的精准VS Code主题设计与工程实践
  • G-Helper完整指南:5分钟掌握华硕笔记本终极控制工具
  • GitHub Actions部署AI智能体:零成本实现代码仓库自动化管理与自我进化
  • 深度强化学习驱动的AIGC语义通信资源分配优化框架详解
  • VPM:硬件设计的包管理器革命,解决Verilog依赖管理难题
  • 拓扑量子计算与Sine-Cosine链模型解析
  • GEO工具实战:提升网站在AI搜索中的可见性与引用率
  • MySQL-基础篇-SQL
  • PCIe验证挑战与MVC解决方案解析
  • Jasminum:Zotero中文文献元数据抓取终极解决方案,如何彻底解决中文PDF识别难题?
  • 【2026全球AI技术大会倒计时警报】:距官方报名截止仅剩72小时,错过再等365天!
  • 基于依赖矩阵的代码架构分析:从AST解析到架构质量度量
  • 基于Claude AI的ASO自动化审计:架构、实现与工程实践
  • DeepSeek-TUI:终端里的 AI 编码 Agent(23,211 Stars)
  • MySQL-基础篇-函数
  • 无人巡检车锂电池包完整设计方案要求【浩博电池】
  • 防尘升降货梯优势大揭秘!泰州群利起重设备有限公司实力之作!
  • 开源AI广告助手RemyAI_ad:从部署到实战的完整指南
  • Dotfiles配置管理:一键部署开发环境与Windows全局热键实践
  • 机器学习高效工作流:ml-retreat深度工作法实战指南
  • 无线通信设备内共存干扰分析与OTA测量技术