c++ - C++ 中字符串 vector 的 reserve() 函数

标签 c++ string vector stl c++14

我正在尝试填充字符串类型的 vector ,并且字符串的内存将定期更新。我在论坛上发现,由于每次更新时内存重新分配,这两个过程都会消耗大量时间size 并且我还读到 reserve 函数几乎可以解决这两种情况的问题。 -> String & vector

我的 vector 不需要超过 1024 个槽,每个字符串需要 10 个字符空间。 我为我的 vector 保留了 1024 个内存插槽。

vector<string> power_set;
power_set.reserve(1024);

但是有什么方法可以为 vector 槽内的字符串保留内存槽吗?

提前致谢。

最佳答案

My vector wont need more than 1024 slots and each string will need 10 character spaces.

然后,考虑 MyString 类的以下(部分)定义:

#include <array>
#include <string>   

class MyString {
    std::array<std::string::value_type, 10> str;

public:
// ...
};

通过使用 MyString 而不是 std::string,在 std::vector 上调用 reserve 时, MyString 中包含的字符串所需的内存(即:str,它是一个 std::array)将被分配:

vector<MyString> power_set;
power_set.reserve(1024);

关于c++ - C++ 中字符串 vector 的 reserve() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47571506/

相关文章:

java - 通过扫描仪验证输入数据

c++ - 何时使用 vector 中的对象以及何时使用指向 vector 中对象的指针?

c++ - 使用 stringstream 从循环中的另一个字符串构建字符串

python - 获取字典的补集

c++ - Boost.Spirit 将#include 功能添加到计算器示例中

c++ - Qt Designer,上下文菜单中缺少 "go to slot"?

没有指针的c++ vector

c++ - 将 shared_ptr 设置为指向现有对象

c++ - union 正确用法

c++ - 解释一行计算空闲虚拟内存的二进制补码数学