"&s[0]"은 항상 std::string의 연속 문자를 가리킵니까?
유지 관리 코드에서 일부 성급한 읽기 std::string의 문자에 액세스하기 위해 "&s[0]"을 사용하는 것에 대한 우려가 발생할 수 있습니다. 이는 C 98/03에서 std::string의 할당이 std::Vector와 달리 연속적이라는 보장이 없다는 사실에서 비롯됩니다. 그러나 C 11은 이러한 불확실성을 해결했습니다.
표준과 달리 실제 경험에 따르면 대부분의 std::string 구현은 연속 저장소를 할당합니다. 그럼에도 불구하고 C 11은 std::string의 할당이 연속적이어야 함을 요구하여 이 문제를 확실히 해결했습니다. 이렇게 하면 문자열이 비어 있는 경우에도 "&s[0]"이 항상 문자열의 첫 번째 문자에 대한 유효한 참조를 가리킵니다.
"&s[0]"은 문자열에 액세스하는 안정적인 방법으로 남아 있습니다. 문자, "str.begin()" 및 "&*str.begin()"과 같은 다른 메서드는 모든 표준 구성에서 일관되게 작동한다고 보장되지 않습니다. 따라서 std::string의 문자에 직접 액세스하려면 "&s[0]"을 사용하는 것이 권장되는 접근 방식입니다.
위 내용은 `&s[0]`은 항상 C 11 `std::string`에서 연속된 문자를 가리킵니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!