【问题标题】:Accessing elements in a multimap c++访问多图 C++ 中的元素
【发布时间】:2015-02-25 16:30:02
【问题描述】:

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

【问题讨论】:

  • 我认为使用 std::vector&lt;std::pair&lt;CFile,FileType&gt;&gt; 可能会更好地为您服务,除非您需要 mulitmap 的某些功能。
  • 它适用于大学,所以我必须使用多地图

标签: c++ multimap


【解决方案1】:

正如@NathanOliver 指出的那样,multimap 可能不是为您的数据建模的最佳结构。但是如果你下定决心要走这条路,可以使用equal_range 成员函数来查找具有给定键的所有值。有关详细信息,请参阅example

【讨论】:

  • 我知道这不是最好的方法,但这是大学的任务,我必须使用多地图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2022-07-15
相关资源
最近更新 更多