首頁 > 後端開發 > C++ > `&s[0]` 是否始終指向 C 11 `std::string` 中的連續字元?

`&s[0]` 是否始終指向 C 11 `std::string` 中的連續字元?

Patricia Arquette
發布: 2024-12-05 05:44:15
原創
837 人瀏覽過

Does `&s[0]` Always Point to Contiguous Characters in a C  11 `std::string`?

「&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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板