我正在尝试填充字符串类型的 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/