在 C 中,STL 向量提供了一個動態數組,可以在新增或刪除元素時自動調整大小。然而,出現了一個常見問題:假設向量的元素始終連續儲存在記憶體中是否安全?
要解決這個問題,請考慮以下場景:
vector<char> vc(100); // Perform operations on vc vc.resize(200); char* p = &vc[0]; // Conduct operations using *p
問題也就是說,在調整向量大小後,我們能否使用第一個元素(*p) 的位址在記憶體中順序可靠地存取向量的其餘元素?向量?
答案:是的,這個假設是有效的。
根據C 03 標準(23.2.4.1),保證向量的連續儲存:
「向量的元素是連續儲存的,這表示如果v 是向量,其中T 是其他型別大於bool,則對所有0 重要提示:雖然保證了連續存儲,但重要的是要記住向量可能需要在加法操作期間重新分配,這可能會使任何指針和迭代器無效。因此,在使用指向向量元素的指標時,必須考慮這種可能性。
以上是STL向量是否保證在記憶體中連續儲存元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!