「&s[0]」是否總是指向 std::string 中的連續字元?
在維護程式碼中,一些倉促的閱讀可能會導致有關使用「&s[0]」存取 std::string 中的字元的問題。這源自於這樣的知識:在 C 98/03 下,std::string 的分配不能保證是連續的,這與 std::vector 不同。然而,C 11 已經解決了這種不確定性。
與標準相反,實務經驗顯示 std::string 的大多數實作確實分配連續儲存。儘管如此,C 11 已經明確解決了這個問題,要求 std::string 的分配是連續的。這確保了“&s[0]”始終指向字串第一個字元的有效引用,即使在字串為空的情況下也是如此。
雖然「&s[0]」仍然是存取字串的可靠方法字符,其他方法如「str.begin()」和「&*str.begin()」不能保證在所有標準配置下一致工作。因此,建議使用「&s[0]」直接存取 std::string 的字元。
以上是`&s[0]` 是否始終指向 C 11 `std::string` 中的連續字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!