Qt를 배우려고합니다. 몇 가지 문제가 있었지만 일반적으로 검색을 통해 해결책을 찾았습니다. 그러나 오늘 오후에 QMap에 문제가있어서 문제를 이해하지 못합니다.<연산자가 두 개의 동일한 객체를 비교할 때 QMap이 삽입되지 않습니다.
QMap<File, bool>
에서 키로 사용할 수 있도록 File 클래스를 만들고 operator<
을 재정의했습니다. 문제는 항목을 삽입하여 QMap
을 초기화하려고하면 operator<
구현의 의미에서 중복 항목이 포함되지 않는다는 것입니다.
bool File::operator<(const File &file) const{
if(comparator == NAME){
if(this->getFileName() != file.getFileName()){
return this->getFileName() < file.getFileName();
}
return false;
}
return this->getFileHash() < file.getFileHash();
}
QMap
초기화 : 비교기 NAME
같은 이름 (QString
)와 같이 사용되는 본 예에서
for(File file: files){
//filesCheckStatus edclared in the header file QMap<File, bool> filesCheckStatus;
filesCheckStatus.insert(file, false);
}
번만 삽입된다.
모든 경우에 false를 반환하는 경우 최종지도에는 항목이 하나만 들어 있습니다 (처음 삽입 된 항목).
누군가가이 동작을 설명 할 수 있습니까?
그것은지도와 세트의 작동 방법에 의해 정의 된 이항 조건
equiv
있습니다. – rustyx'QMultiMap' 시도 – Felix
File은 File의 필드가 아닌 파일 이름의 키이고 ==는 고유 키 (java의 equals와 같은)를 사용하는 데 사용되지 않습니다. – naslami