我正在开展一个项目,我绝对需要在内存中连续存储数据.我想存储一些(最多100个)字符串(我不知道每个字符串的实际大小).所以我将创建一个包含100个元素的字符串向量.
std::vector<std::string> vect;
vect.reserve(100)
Run Code Online (Sandbox Code Playgroud)
但是String可以是任何大小的.那么它是怎样工作的?每次更改字符串时,我的矢量是否重新分配?或者是一个std :: string就像一个指向字符串第一个字符的指针,就像一个char*将是一个C字符串?
string都是类的实例,string该实例将包含一个char*.string向量中的对象将位于连续的内存中.string都会在连续的记忆中std::allocator为字符串定义自定义,否则所有字符串的字符都不会在连续的内存中vector或调用的大小时,字符串的内存中的位置可能会更改shrink_to_fitstring当你增加每个字符的大小时,每个字符的内存中的位置可能会改变stringvector如果您修改或删除其中一个字符串,则不会重新分配string将存储在string而不是指向的另一个位置char*| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |