# 简介

### 什么是 Vector Helper？

Vector Helper 是一个用 C 编写的 Vector Array（矢量数组）库，皆在为 C 项目提供侧重于运行时安全的高性能 Vector Array。若您使用过 C++ Std，您应该知道 `<vector>` 头文件中声明的`std::vector<T>` 模板类提供了 Vector Array，但 `std::vector<T>` 仅限于在 C++ 中使用。

### 为什么存在 Vector Helper？

Vector Helper 原先是 SmallSO Studios. 内部纯 C 项目中的子模块，皆在纯 C 中实现与 `std::vector<T>` 模板类大致相同的功能，而开源版本则是从其项目中分离并整理出来的独立版本。Vector Helper 遵循新的 API 规范，与 `std::vector<T>` 模板类不同。并且，Vector Helper 是侧重于运行时安全设计的，也即包含更多的 API 调用检查、出入参数合法验证等。在性能方面，与 `std::vector<T>` 模板类接近。

### Vector Helper 与其他 Vector Array 有何不同？

整体上来看，主要有以下几点：

* Vector Helper 侧重于运行时安全，但这不是绝对的。
* Vector Helper 侧重于运行时完整性，但这不是绝对的。
* Vector Helper 在确保运行时安全和完整性的同时，尽可能地提升性能。
* Vector Helper 确保 C/C++ 可同时使用，为其提供预处理器兼容性支持。
* Vector Helper 以跨主流平台的通用性 C 代码为主（理论上），但一部分平台是未经过验证的。

### Vector Helper 目前由谁维护？

Vector Helper 项目由 SmallSO 创建并在 Github 以 MIT 许可证开放源代码。在没有明确声明之前，SmallSO 将保持对该项目的定期维护，也欢迎其他开发者加入该项目的开发与维护。若有任何问题或建议，欢迎前往 Github 提交 issue。

### 最后...

或许很多开发者对于 Vector Helper 侧重于运行时安全和完整性不太理解，认为开发者应该对 C 代码的执行结果负责，没必要因此而牺牲执行性能。的确，我们非常认同这一观点，但由于 Vector Helper 原先是 SmallSO Studios. 内部纯 C 项目的子模块，该内部项目运行在服务端，对容错有一定的要求。当然，这并不代表我们对这一内部项目的不信任，但作为服务端项目，我们依旧认为应具有一定的容错能力。上述内容中的“容错”是指针对开发者的，而非执行代码本身，皆在阻止与开发者预期不符的常规错误操作。

若您认为不需要运行时安全与完整性保护，您可以从 Vector Helper 中移除和运行时安全与完整性相关的代码。除非您对性能要求非常高，否则不建议您这么做。

最后，欢迎更多开发者参与 Vector Helper 项目的开发、优化与维护工作。

{% hint style="info" %}
仍有疑问？建议您参阅 “常见问题” 页面或向我们反馈。
{% endhint %}

{% content-ref url="faq" %}
[faq](https://smallso.gitbook.io/vector/faq)
{% endcontent-ref %}
