访问多图c ++中的元素

时间:2015-02-25 16:30:03

标签: c++ multimap

我有一个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的文件类型。我如何访问多图的元素?当多图的键值是一个类时,我不知道它是如何工作的。

1 个答案:

答案 0 :(得分:0)

正如@NathanOliver指出的那样,multimap可能不是建模数据的最佳结构。但是,如果您决定采用这种方式,请使用equal_range成员函数查找具有给定键的所有值。有关详细信息,请参阅example