Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 访问多映射c+中的元素+;_C++_Multimap - Fatal编程技术网

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;