std::string::find
표준 C ++ 컨테이너와 동작 이 일치하지 않습니다.
예 :
std::map<int, int> myMap = {{1, 2}};
auto it = myMap.find(10); // it == myMap.end()
그러나 문자열의 경우
std::string myStr = "hello";
auto it = myStr.find('!'); // it == std::string::npos
왜 실패한 myStr.find('!')
반품 myStr.end()
이 std::string::npos
아닌가?
std::string
다른 컨테이너와 비교할 때 다소 특별 하기 때문에 이것 뒤에 진짜 이유가 있는지 궁금합니다. (놀랍게도, 나는 이것을 어디에서나 질문하는 사람을 찾을 수 없었다).
std::string
내부적으로 저렴한 요소 (메모리와 관련하여) 인 문자로 구성 되기 때문 입니다. 또한 캐릭터는 std::string
포함 할 수있는 유일한 유형 입니다. 반면 std::map
에 더 복잡한 요소로 구성됩니다. 또한 사양은 std::map::find
요소를 찾는 것으로되어 있으며 사양은 std::string::find
위치를 찾는 것입니다.