c++ - 访问多映射 C++ 中的元素

标签 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 用于目录名称和文件类型。同样在第二类中有一个 multimap,其键值是 CFile 类,映射值是FileType 文件的类型。如何访问 multimap 的元素?当 multimap 的键值是一个类时,我不知道这是如何工作的。

最佳答案

正如@NathanOliver 指出的那样,multimap 可能不是建模数据的最佳结构。但是,如果您决心走这条路,请使用 equal_range成员函数查找具有给定键的所有值。查看example了解更多详情。

关于c++ - 访问多映射 C++ 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724348/

相关文章:

c++ - Oracle OCI C++ 库

C++模板模板中的此类分配是什么意思?

c++ - std::multimap<std::chrono::milliseconds, T>::rbegin 指向 MSVS-13 中的 end()?

java - 删除 Multimap 中的重复值

c++ - std::multimap 中的唯一键是否存在迭代器?

c++ - 在 C++ 中实现二维区间搜索的最佳方法是什么?

c++ - 将文件的内容添加到结构

c++ - 有更好的方法来重载类似的算术运算符吗?

c++ - 带有双端队列的随机访问迭代器的无效迭代器

c++ - VC++中等键的多重映射顺序