필자는 자체 iterator 클래스를 정의했다. 어떻게 든 std :: string에 연결할 수있어서 std :: string 같은 종류의 인터페이스를 다시 구현하지 않아도됩니까? std :: basic_string의 템플릿 인수를 확인했지만이 종류의 것을 취하지는 않습니다.std :: string과 함께 자체 iterator 사용하기
답변
하나의 아이디어는 이터레이터를 반환하는 begin(std::string)
및 end(std::string)
함수를 제공하는 것입니다. 이것들은 반복자를 기대하는 모든 장소에서 사용될 수 있습니다.
begin()
자유 기능 스타일은 from c++11 onwards입니다.
이 함수를 자신의 네임 스페이스에 넣을 수는 있지만 찾을 수 있습니까? Argument Dependent Lookup은 _your_ namespace를 검색하지 않습니다. – MSalters
@MSalters가 내 네임 스페이스를 검색하지 못할 이유가 있습니까? 그것은 네임 스페이스에 있어야 할 필요는 없으며, 글로벌 네임 스페이스는 그렇게해야합니다. –
이것은 적절한 begin() 멤버 함수를 노출하지 않고 반복 할 수있는 클래스에 std :: begin의 맞춤식 특수화를 제공 할 수있는 특별한 경우에 불과합니다. 권리? –
반복자 쌍을 취할 std :: string에 대한 오버로드 된 생성자가 있습니다. 그것은 작동하지만 복사본을 만듭니다. 그것은 물론 당신이 할 수있는 최선입니다. std::string
개체 내부에 작은 문자열 최적화 인 char[N]
이있는 구현을 고려해보십시오. 그것은 매우, 아주 가능성이 귀하의 메모리 레이아웃과 호환되지 않습니다.
- 1. std :: std :: string과 std :: vector 사이의 이동
- 2. std :: shared_ptr Iterator
- 3. std :: set :: iterator 변환 오류
- 4. System :: String ^을 std :: string과 비교하십시오.
- 5. C++에서 std :: thread와 함께 atomics 사용하기
- 6. std :: shared_ptr와 함께 커스텀 deleter 사용하기
- 7. 문제 C++ STD Iterator 비교 연산자
- 8. Iterator
- 9. std :: list 및 iterator invalidation에서 splice()
- 10. std :: list iterator : 다음 요소 가져 오기
- 11. C++에서 std :: iterator 줄 바꿈
- 12. std :: string 생성자에서 오류가 발생한 ITERATOR 목록
- 13. std :: string을 std :: map의 키로 사용하기
- 14. 설정에서 자체 enum 사용하기
- 15. 자체 컨테이너 클래스에 대한 C++ iterator 및 const_iterator 문제
- 16. std :: for_each와 함께 사용하기 위해 멤버 함수를 바인딩하는 방법은 무엇입니까?
- 17. 하나의 클래스에서 멤버 함수와 함께 일반 std :: function 객체 사용하기
- 18. 301 리디렉션과 함께 자체 호스팅 된 Wordpress 사용하기
- 19. iterator issues
- 20. 자체 유형으로 많은 믹스 사용하기
- 21. 함께 Java와 TWAIN을 함께 사용하기
- 22. 함께 재생 및 함께 사용하기
- 23. iterator 조작에 문제가 있습니다
- 24. iterator successor
- 25. 'std :: vector <T> :: iterator it;' 나는이 기능을 가지고
- 26. std :: multiset :: iterator = NULL이 더 이상 유효하지 않습니까?
- 27. @string과 @ + 문자열의 차이점은 무엇입니까?
- 28. iterator :: difference_types 시스템에 독립적입니까
- 29. ActivePython을 WSH와 함께 사용하기
- 30. C와 함께 GotoBLAS2 사용하기
왜 이렇게 하시겠습니까? 'itd :: string'의 반복자 ('char *')가하지 않는 반복자 클래스는 무엇입니까? –
이터레이터는 UTF8과 같은 문자 인코딩을 알고 있지만 std :: string은 그렇지 않습니다. 문자 인코딩을 알고있는 다른 C++ std :: string 기반 구현을 찾을 수 없습니다. – Aarkan