我有一个 CFile 类:
class CFile{
private:
string filename;
unsigned int filesize;
public:
CFile(){
filename="";
filesize=0;
}
CFile(string name,unsigned int size){
filename=name;
filesize=size;
}
string getFileName(){
return filename;
}
int getSize(){
return filesize;
}
void ChangeSize(unsigned int size1){
filesize=size1;
}
bool operator ==(CFile a){
return(a.getFileName().compare(getFileName()))&&(a.getSize()==getSize())?true:false;
}
void operator =(CFile a){
filename=a.getFileName();
filesize=a.getSize();
}
istream &operator>>(istream &in){
in>>filename>>filesize;
return in;
}
ostream &operator<<(ostream &out){
return out<<filename<<filesize;
}
bool nameCompare(CFile a){
return (lexicographical_compare(filename.begin(),filename.end(),a.filename.begin(),a.filename.end()))?1:0;
}
static bool greather(const CFile& obj1,const CFile& obj2){
if (obj1.filesize>obj2.filesize) return true;
else return false;
}
};
我有一个 CDirectory 类:
class CDirectory{
private:
string dirname;
enum FileType {Archive,Hidden,Readonly,System};
multimap<CFile,FileType> dirmap;
第一类 CFile 用于文件的大小和名称。第二类 CDirectory 用于目录名称和文件类型。同样在第二类中有一个 multimap,其键值是 CFile 类,映射值是FileType 文件的类型。如何访问 multimap 的元素?当 multimap 的键值是一个类时,我不知道这是如何工作的。
最佳答案
正如@NathanOliver 指出的那样,multimap
可能不是建模数据的最佳结构。但是,如果您决心走这条路,请使用 equal_range
成员函数查找具有给定键的所有值。查看example了解更多详情。
关于c++ - 访问多映射 C++ 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724348/