> 백엔드 개발 > C++ > C 11에서 std::string의 쓰기 시 복사 구현이 합법적인가요?

C 11에서 std::string의 쓰기 시 복사 구현이 합법적인가요?

Susan Sarandon
풀어 주다: 2024-12-25 14:32:11
원래의
247명이 탐색했습니다.

Is Copy-on-Write Implementation of std::string Legal in C  11?

C 11에서 COW std::string 구현의 합법성

이전 버전의 C에서는 COW(기록 중 복사)가 std::string에 대한 실행 가능한 구현 전략. 그러나 C 11의 유효성에 대한 우려가 제기되었습니다. 이 기사에서는 C 11의 COW 기반 std::string 구현의 적법성을 조사합니다.

질문: C 11이 명시적으로 금지합니까? COW 기반 std::string 구현?

답변: 아니요, C 11은 COW 기반 구현이 금지된다는 점을 명시적으로 명시하지 않습니다.

질문: 그렇지 않은 경우 이 제한은 어떻게 암시됩니까?

답변: 반복자 및 참조 무효화와 관련된 C 11의 새로운 요구 사항으로 인해 제한이 발생합니다. 표준의 섹션 21.4.1 p6에 따르면 무효화는 특정 경우에만 허용됩니다:

  • 비-const basic_string 참조를 허용하는 특정 표준 라이브러리 함수에 인수로 전달
  • operator[], at, front, back, start, rbegin, end 및를 제외하고 const가 아닌 멤버 함수 호출 rend.

COW 문자열 구현에서 상수가 아닌 연산자[]를 호출하면 복사 및 참조 무효화가 필요합니다. 그러나 앞서 언급한 조항에서는 이를 금지하고 있습니다. 따라서 C 11에서는 COW std::string 구현이 더 이상 허용되지 않습니다.

위 내용은 C 11에서 std::string의 쓰기 시 복사 구현이 합법적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿