“&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中文网其他相关文章!