【发布时间】:2015-02-25 16:30:02
【问题描述】:
我有一个 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 用于文件的目录名称和类型。第二类中还有一个多映射,其键值为 CFile 类,映射值为文件FileType的类型。如何访问multimap的元素?我不知道当multimap的键值是一个类时这是如何工作的。
【问题讨论】:
-
我认为使用
std::vector<std::pair<CFile,FileType>>可能会更好地为您服务,除非您需要 mulitmap 的某些功能。 -
它适用于大学,所以我必须使用多地图