> For the complete documentation index, see [llms.txt](https://smallso.gitbook.io/vector/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://smallso.gitbook.io/vector/faq.md).

# 常见问题

本页将列出与 Vector Helper 相关的常见问题

## Vector Helper 适用于那些平台？

跨平台，理论上支持可执行通用 C/C++ 代码的平台。目前已经过测试的系统平台有 Linux、Windows；已经过测试的 CPU 架构有 x86、amd64、arm、arm64。

## Vector Helper 是否必须编译为库后才能使用？

不，根据场景不同，若您侧重于性能，请直接将源代码文件加入您的项目并一同参与构建，同时建议您打开编译器的优化选项，例如 GCC 建议打开 -O3/-O2、-funroll-all-loops、-flto、-fomit-frame-pointer 优化选项，并进行静态链接（-static）。

若您侧重于多进程实例见的内存占用，建议您构建动态库后与您的项目进行动态链接。

若您侧重于易用性，建议您构建静态库后与您的项目进行动态或静态链接。

## Vector Helper 整体性能表现如何？

根据您的使用方式不同而异，理论上若您直接将 Vector Helper 的源代码加入您的项目并参与构建，开启编译器适用的优化选项，采用静态链接方式，性能表现优于 `std::vector<T>` 模板类，但不是绝对的。

由于 Vector Helper 侧重于运行时安全与完整性，性能相对于前者是次要的。当然，您可以手动调整这一点。

## Vector Helper 的内存分配器运行规则是什么？

当 Vector 对象实例的可用空闲内存空间不足时，内存分配器将对已分配的内存空间进行 1 倍 + 本次所需内存大小的扩容。当元素被移除时，其元素所占用的内存不会被主动回收，这是为了减少之后内存分配器的运行次数，从而提升应用程序执行性能。

若需要释放可用的空闲内存空间，可以调用内存管理函数 `vector_helper_free_available_memory` 手动强制回收空闲内存空间。

## 为什么 Vector 对象实例的初始可容纳元素个数必须大于 0？

因为当您尝试创建一个 Vector 对象实例时，内存分配器需要分配不少于 1 byte 的内存空间，以便确保内存分配是成功的。同时，建议您合理设置初始可容纳元素个数，这有助于提升应用程序执行性能。

## 为什么不能直接访问 Vector 对象实例数据结构？

为了确保 Vector 对象实例的数据结构完整性，即使您可以轻松访问该数据结构。您应该调用 Vector Helper API 实现相关功能，否则会破坏运行时安全与完整性，导致不可预料的异常。

## 为什么不能直接通过元素指针访问和修改元素？

因为这样可能会破坏元素的完整性。为了确保运行时安全与完整性，您应该调用 Vector Helper API 实现相关功能，否则可能会导致不可预料的异常。

## 我的问题没有在“常见问题”页面中列出怎么办？

非常抱歉该页面没有帮助到您，您可以从下方选取一个解决方案然后继续：

* 前往 Vector Helper 项目位于 Github 的页面提交 issue（推荐）
* 将您的问题详细描述并邮件至 <xiaoyy@altca.cn>
* 前往 <https://www.xiaoyy.org/ideas.html> 提交反馈

{% hint style="info" %}
在收到您的问题后，我们会尽力为您解答与 Vector Helper 相关的问题。
{% endhint %}
