我正在开发一个项目,我绝对需要在内存中有连续的数据。 我想存储一些(最多100个)字符串(我不知道每个字符串的实际大小)。所以我会创建一个由100个元素组成的向量。如何在内存中存储矢量<string>
std::vector<std::string> vect;
vect.reserve(100)
但是一个字符串可以是任意大小。那么它是怎样工作的?每当我更改一个字符串时,我的矢量是否会重新分配?或者是一个std :: string就像一个指向字符串第一个字符的指针,就像char *将用于C字符串一样?
http://stackoverflow.com/questions/1986966/does-s0-point-to-contiguous-characters-in-a-stdstring –
'std :: string'的行为就像你的例子中的一个指针。有一个小字符串优化,其中小字符串(小意味着〜20-40个字符)在'std :: string'本身内部。如果你需要所有的字符在连续的内存中,你将不得不使用'vector'并手动完成。 –
nwp
谢谢,那种信息是宝贵的,因为字符串可以做背景的事情,这就是为什么我问这个。你说的是,它做了一些优化,可能会使它不连续? – FreeYourSoul