std::map<any, string>
가 작동하지 않습니다. 에 또 다른 접근 방법이 있는지 궁금합니다.std :: map (또는 비슷한 것)에서 boost.any를 키로 사용할 수 있습니까?
답변
나는이 문제가 Boost::Any
이 아니라 사용자 정의 비교기를 지정하지 않는다고 생각합니다. map
은 정렬 된 연관 컨테이너이기 때문에 비교자를 가져야합니다. 나를 위해
다음 작품 : 그것에 맞게 당신의 목적에 따라이 :
#include <iostream>
#include <map>
#include <boost/any.hpp>
using namespace std;
struct cmp {
bool operator()(const boost::any& l, const boost::any& r) {
try
{
int left = boost::any_cast<int>(l);
int right = boost::any_cast<int>(r);
return left < right;
}
catch(const boost::bad_any_cast &)
{
return false;
}
return false;
}
};
int main() {
map<boost::any, string, cmp> ma;
boost::any to_append = 42;
ma.insert(std::make_pair(to_append, "int"));
if (ma.find(42) != ma.end()) {
cout << "hurray!\n";
}
return 0;
}
비교 펑터는 맵에서 사용하기에 유효하지 않습니다. 일부 (a, b) 쌍에 대해
좋은 예가 될 것입니다. 어쨌든 비교기가 실패 할 경우 더 많은 경우를 구성 할 수 있다고 생각합니다. 여러 유형에 걸쳐 주문하는 것에 대한 아이디어는 나에게 좋지 않습니다. – dirkgently
예제는 하나의 (a)가 포함되고 int이고 다른 하나의 (b)가 문자열을 포함하는 모든 쌍입니다. 비교기는
당신은 당신이 사용하는 모든 종류의 필적 확신 할 수 있도록, boost::variant
보다는 boost::any
보고 할 수 있습니다.
방문객을 사용하면 variant
초에 비교 연산자를 제공하는 것이 가장 좋습니다.
- 1. QPointer를 std :: map의 키로 사용할 수 있습니까
- 2. std :: map insert 또는 std :: map find?
- 3. 멤버 함수 포인터의 std :: map?
- 4. std :: string을 std :: map의 키로 사용하기
- 5. std :: vector, std :: map 및 메모리 문제
- 6. C++ 버전 std :: map
- 7. std :: map default value
- 8. std :: map 데이터 정렬?
- 9. C에 std :: map 포팅?
- 10. std :: map 키의 가장 빠른 유형은 무엇입니까?
- 11. 삽입 순서를 추적하는 std :: map?
- 12. 누구나 C++ std :: map 대체 컨테이너를 추천 할 수 있습니까?
- 13. Sky Map API를 사용할 수 있습니까?
- 14. NSDictionary에서 프로토콜 객체를 키로 사용할 수 있습니까?
- 15. NSDictionary에서 어떤 클래스를 키로 사용할 수 있습니까?
- 16. std :: string 키와 int 키의 std :: map 사용 비용은?
- 17. STL std :: map 동적 순서
- 18. std :: map to Python 매핑
- 19. 어떻게 boost :: thread :: id를 unordered_map의 키로 사용할 수 있습니까?
- 20. 혼란스러운 std :: map 삽입 동작
- 21. std :: tr1 :: weak_ptr이있는 컨테이너에서 std :: remove를 어떻게 사용할 수 있습니까?
- 22. 비정상적인 std :: map 런타임 오류
- 23. std :: map segfaults 연산자 [] 사용시
- 24. std :: map 포인터를 (객체에) 포인터로 저장 (일부 객체의 관련 구조체에). 어떤 유형을 사용할 수 있습니까?
- 25. std :: ofstream은 움직일 수 있습니까?
- 26. 두 개의 숫자를 Map 키로 사용하는 방법
- 27. C++ STD :: MAP 복잡한 키 검색
- 28. std :: map 맞춤 키가 아닌 고유성 문제
- 29. const std :: map <boost :: tuples :: tuple, std :: string>?
- 30. Java에서 Map 키로 임의의 객체를 사용하면 어떤 단점이 있습니까?
원하는 것을 원하십니까? – Skurmedel
any 키는 어디에 있습니까? – Artelius
어떻게 stackoverflow에서 템플릿 매개 변수를 게시 할 수 있습니까? – DaVinci