std::unorderd_map<U,T>
이 있는데, U, T는 구체적인 유형입니다. 그런 다음지도에 맞춤형 new
연산자를 사용하여 std::pair<U,T>
을 입력하면지도에 무언가를 삽입 할 때마다 맞춤 new 연산자가 사용됩니다. 그게 끝날 수 있습니까? 이것이 가능한 방법에 대한 힌트가 있습니까? 모든 stl 컨테이너에 new
이 오버로드 된 것을 검색했지만 그 주제에 대해 많은 것을 찾지 못했습니다.stl 컨테이너에 과부하 "new"가 있습니까?
답변
operator new
에 대한 과부하는 잊어 버리십시오. 그것은 거의 쓸모없는 언어 기능입니다. 메모리 할당은 핵심 언어보다 라이브러리에서 더 잘 수행됩니다. 실제로 수행해야하는 작업은 사용자 정의 할당자를 맵에 전달하는 것입니다.
MyCustomAllocator<std::pair<const U, T>> alloc(a, b, c);
std::unordered_map<U, T, std::hash<U>, std::equal<U>,
MyCustomAllocator<std::pair<const U, T>>> m(10, alloc);
나는 정말로 더 잘했다는 것을 확신하지 못한다. (할당자는 엉망이다.) 어쨌든, 분명히 다르게 끝난다. –
@ JerryCoffin : 표준 라이브러리의 실제 할당자가 아무 문제가 없다고 말하는 것이 아닙니다. 메모리 할당은 핵심적인 문제가 아니라 라이브러리 문제입니다. 'std :: vector
'MyCustomAllocator'를 만드는 방법에 대한 간단한 소개를 포함시켜 주시겠습니까? 어떤 지침없이 커스텀 할당자를 만드는 것은 정말 엉망이 될 수 있습니다. –
- 1. STL 컨테이너에 대한 표준 레이아웃 보장이 있습니까?
- 2. STL 컨테이너에 삽입하여 이동 사용
- 3. STL 컨테이너에 상응하는 데이터 구조
- 4. STL 호환 컨테이너에 대한 상용구 typedef
- 5. 클래스 변수에 STL 컨테이너에 로컬 변수를 저장하고 있습니까?
- 6. boost :: reference_wrapper를 사용하여 참조를 STL 컨테이너에 저장할 수 있습니까?
- 7. Seg fault after 항목이 STL 컨테이너에 푸시되었습니다.
- 8. unique_ptr을 포함하는 구조체 항목을 stl 컨테이너에 추가
- 9. 템플릿이 다른 객체를 STL 컨테이너에 저장하는 방법
- 10. C++ STL 벡터/목록 컨테이너에 대한 Python과 동일
- 11. << C++ stl 컨테이너에 대한 연산자가 오버플로 됨
- 12. new가 실패하지 않습니까? C++에서
- 13. 과부하
- 14. 가비지 수집 환경에서 stl 컨테이너에 객체를 저장하는 중
- 15. std :: shared_ptr을 여러 STL 컨테이너에 추가하는 방법은 무엇입니까?
- 16. STL 컨테이너에 대한 포인터 스레드 안전성 (대기열/큐)
- 17. STL 컨테이너에 const 개체를 넣을 수없는 이유는 무엇입니까?
- 18. 과부하
- 19. 과부하 []
- 20. 비 로컬 컨테이너에 대한 STL 알고리즘 오버로드/전문화 (데이터베이스 백엔드)
- 21. 생성자에서 빈 STL 컨테이너에 대한 참조를 초기화하는 방법은 무엇입니까?
- 22. 동적으로 할당 된 stl 컨테이너에 할당자를 설정하는 방법은 무엇입니까?
- 23. VC++에서는 STL 컨테이너에 const 유형을 사용할 수 있습니다. 왜?
- 24. new가 필요없는 Java 배열 : contiguosly
- 25. 컨테이너에 그래픽이 포함되어 있습니까?
- 26. 반복자가 QT 컨테이너에 유효한지 확인하십시오.
- 27. 컨테이너에 대한 스마트 포인터
- 28. 코코아에서 + new가 사용 되었습니까? 왜 존재 하는가?
- 29. 리스트 및 unordered_maps와 유사한 boost 또는 stl 쓰레드 안전 컨테이너에 있습니까?
- 30. 선형 저장소가있는 컨테이너에 STL 알고리즘이있는 반복자 대신 원시 포인터를 사용할 수 있습니까?
먼저, 연산자 new 'pointer = new SomeType (argument)'의'new' 키워드는 다른 것들입니까? –
나는 그것을 지금 보았다. 그리고 나는 그것을 알지 않았다. 힌트를 가져 주셔서 감사합니다. – ben
다행 이군. 두 번째 : Kerrek의 대답을 지원합니다. 맞춤 할당자를 사용하는 것이 더 좋습니다. 이것이 바로 표준 컨테이너가 제공하는 사용자 정의 메커니즘입니다. –