我不想用vector头文件
时间: 2024-10-21 19:13:54 浏览: 8
C++中vector容器的用法
如果你不想直接使用`<vector>`头文件,可以考虑使用标准库中的其他容器,如`list`、`deque` 或 `set`。这取决于你的需求,比如你需要快速访问元素就选择`vector`,需要常数时间复杂度的插入和删除操作则可以选择`list`。例如,如果你想创建一个动态数组而不是线性表,可以使用`std::array`,它不是真正的动态容器,但是它的元素在内存中通常是连续存放的。
如果要创建一个字符串向量而不使用`vector`,可以使用`std::basic_string` 和 C++17 中新增的`std::span` 或者 C++20 的`std::ranges::subrange` 结构:
```cpp
#include <string>
#include <span>
#include <ranges>
// 创建一个动态字符串向量,但不包含底层容器
std::span<const std::string> keywords = {"auto", "double", ...}; // 假设这里已经初始化了关键字
bool isKeyword(const std::string& line) {
return std::find(keywords.begin(), keywords.end(), line) != keywords.end();
}
// 使用C++20的subrange
std::ranges::subspan<const std::string> keywords = {"auto", "double", ...};
```
不过需要注意的是,`std::span` 和 `std::ranges::subrange` 都需要预分配足够大的空间,如果后续添加新的关键词,可能会导致资源浪费或需要调整它们的范围。
阅读全文