C++ 访问多映射c+中的元素+;
我有一个类文件:C++ 访问多映射c+中的元素+;,c++,multimap,C++,Multimap,我有一个类文件: class CFile{ private: string filename; unsigned int filesize; public: CFile(){ filename=""; filesize=0; } CFile(string name,unsigned int size){ filename=name; filesize=size; } strin
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;
}
};
class文件{
私人:
字符串文件名;
无符号整数文件大小;
公众:
CFile(){
filename=“”;
filesize=0;
}
CFile(字符串名称,无符号整数大小){
filename=名称;
文件大小=大小;
}
字符串getFileName(){
返回文件名;
}
int getSize(){
返回文件大小;
}
void ChangeSize(无符号整数大小1){
filesize=size1;
}
布尔运算符==(文件a){
返回(a.getFileName().compare(getFileName())&&(a.getSize()==getSize())?true:false;
}
void运算符=(文件a){
filename=a.getFileName();
filesize=a.getSize();
}
istream和operator>>(istream和in){
在>>文件名>>文件大小中;
返回;
}
ostream&operator正如@NathanOliver所指出的,multimap
可能不是为数据建模的最佳结构。但如果您决定这样做,请使用成员函数查找具有给定键的所有值。有关详细信息,请参阅。我认为使用std::vector
可能会更好,除非有一些特性我知道这不是最好的方法,但这是大学的任务,我必须使用multimap
class CDirectory{
private:
string dirname;
enum FileType {Archive,Hidden,Readonly,System};
multimap<CFile,FileType> dirmap;