다음 작은 코드를 고려 클래스 포인터 값 :QMultiHash 및
class Person {
public:
QString name;
int age;
};
int main()
{
QMultiHash<int, Person*> personHash;
Person* p1 = new Person;
p1->age = 24;
p1->name = "X";
personHash.insert(p1->age,p1);
Person* p2 = new Person;
p2->age = 24;
p2->name = "X";
if(personHash.contains(p2->age,p2)) {
cout << "Duplicate!!\n";
}
else {
cout << "Inserted!!\n";
}
return 0;
}
출력은 삽입된다!이며 해시가 내용이 아닌 포인터 값을 비교하기 때문에 예상됩니다.
키가 24 개인 항목을 반복하지 않고 중복 된 항목을 확인하는 방법이 있습니까?
정확하게 멀티 해시에 저장하고자하는 것은 무엇입니까? 고유 한 값만 필요하면'QMap '을 사용하지 않으시겠습니까? – vahancho
포인터가 필요한 이유를 정확히 말해 주시겠습니까? –
문제는 키에 따라 항목을 검색 한 다음 처리해야하기 때문에 QMultiHash 함수 "values"를 사용할 때 key = target_Key 값의 복사본을 반환합니다. 매번 항목 클래스의 생성자를 호출하고 참조로 항목을 반환하지 않으므로 시간이 오래 걸립니다. 다른 방법이 있다면 plz 알려주세요. – Ameen