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++ - 删除 multimap 中的重复键

c++ - 从 std::multimap<> 中删除项目后,我可以继续使用迭代器吗?

c++ - 我们可以使用 boost::multi_index::multi_index_container 作为多索引映射吗?

c++ - 使用模板函数的不同类型的输入

java - 如何消除 Guava MultiMap 值中的重复项?

c++ - 类模板中静态方法模板的特化

android - 在 Android 应用程序中下载 cpp 二进制文件

c++ - 如何在 multimap 的字符串中查找子字符串

c++ - 你认为这个技术 "BAD"吗?

c# - 如何从捕获的异常中打印消息?