我正在開發一個項目,我絕對需要在內存中有連續的數據。 我想存儲一些(最多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