진부한 사과이 사이트가 잘못된 경우 제게 알려주십시오! 나는 키 누구 개선에 어떤 포인터를 던질 수 있는지 여부, 특정 std::map
에 존재하는이 사용하는 것이 좋습니다 궁금하고 있는지 여부를 확인하는 함수를 작성했습니다C++ std :: map이 올바른 방법입니다.
.
std::map
은 값에 대해 여러 데이터 유형을 허용합니다.
union Variants {
int asInt;
char* asStr;
Variants(int in) { asInt = in; }
Variants() { asInt = 0;}
Variants(char* in) { asStr = in; }
operator int() { return asInt; }
operator char*() { return asStr; }
};
template<typename T, typename Y>
bool in_map(T value, std::map<T, Y> &map)
{
if(map.find(value) == map.end()) {
return false;
}else{
return true;
}
}
내가 다음 주에 사용할 수 있습니다
std::map<string, Variants> attributes;
attributes["value1"] = 101;
attributes["value2"] = "Hello, world";
if(in_map<std::string, Variants>("value1", attributes))
{
std::cout << "Yes, exists!";
}
어떤 도움이나 조언이 크게 감상 할 수있다. 이 규칙이나 표준을 준수하지 않으면 죄송합니다. 감사!
'in_map()'함수가 복잡하다고 생각합니다! 본문은'return map.find (value)! = map.end(); '가되어야합니다. –
@ DietmarKühl 안녕하세요, 저는'너무 복잡합니다 '라는 말의 의미를 이해하지 못합니다. – Phorce
'in_map'은'const '에 의해 두 인수를 취해야하고 함수 본문은'return map.find (value)! = map.end();' – Praetorian