[c++] std :: string은 STL의 일부입니까?


Answers

이것에 대한 진정한 대답은 없습니다. std::string 은 다른 컨테이너와 완전히 독립적으로 개발되었습니다. 반면에 랜덤 액세스 컨테이너의 모든 요구 사항을 충족시키기에 충분했습니다. 이를 "STL"의 일부로 분류할지 여부는 전적으로 귀하에게 달려 있습니다. 결국 "STL"은 합의 된 단일 정의가 없으며 갑자기 그 가능성이 있음을 지적합니다 명확한 의미를 얻는 것은 멀리 떨어져 있습니다 (멋지게 넣는 것).

IOW, "STL"은 사람들이 그것을 사용하여 3 가지 이상의 다른 것들을 의미하기 때문에 사용하기에 형편없는 약어입니다. 그러나 불행하게도 더 나은 정의가있는 약어가 없으므로 STL은 계속 사용되며 앞으로도 계속 사용할 것입니다. 그렇게하고 (그리고 계속 커뮤니케이션을 방해한다).

Question

(STL을 말할 때 컨테이너, 반복기, 알고리즘 및 펑터 (functor)를 중심으로하는 템플릿 라이브러리에 대해 이야기하고 있습니다.)
이 질문은 std::string 대부분이 beginend 함수 (반복자 포함), size 함수 및 모든 컨테이너 / 컨테이너에서 작동하는 일반 STL 알고리즘에 사용할 수있는 기능과 함께 정상 컨테이너와 같이 동작합니다. 반복자 (예 : transform , sort , find 등)를 통해 범위를 지정합니다.

그러나 동시에, 임의의 데이터를 저장하는 컨테이너의 그림에 맞지 않으므로 컨테이너 자체가 아닙니다. 또한 substr , find_first_of 등과 같은 멤버 함수를 통해 포함 된 데이터를 처리하지만 true 컨테이너는 그렇게하지 않고 알고리즘이 처리하도록합니다.

또한 cplusplus 참조 사이트 및 C ++ 표준은 실제 컨테이너와 함께 std::string 고유 한 카테고리에 나열하지 않습니다.
그러나 SGI의 STL 사이트 에서 basic_string (결과적으로 string typedef)은 다른 컨테이너와 함께 언급되며 basic_string 참조 사이트 는 "컨테이너"범주에 속한다고 명시합니다.

이제 내 질문은 string 실제로 STL의 일부인지 또는 별개의 라이브러리 자체인지 여부입니다.
그리고 그것이 STL에 속한다면, Stepanov가 개발 한 원래의 STL과 다릅니 까?




Related