请问下这种数据结构怎么选择?

我设计了一个类来表示图片,数据部分差不多是这样.

class Pic
{
    private:
        QFileInfo info;
        QVector<unsigned char> charac_value;
};

我希望能有1个存储这个类的对象的数组,满足:
push_back新对象前,尽快地判断数组内是否包含已经包含使用了该路径的对象,如果有那就不添加了.
我尝试在添加前一个一个检查,感觉非常繁琐.
我尝试额外单开一个qset记录数组里已经出现过的info的path的字符串,感觉非常不对劲.

阅读 481
1 个回答
✓ 已被采纳
#include <QFileInfo>
#include <QVector>
#include <QSet>
#include <QString>

class Pic {
private:
    QFileInfo info;
    QVector<unsigned char> charac_value;

public:
    Pic(const QString& filePath) : info(filePath) {}

    QString getPath() const {
        return info.filePath();
    }
};

class PicManager {
private:
    QVector<Pic> pics;
    QSet<QString> paths;

public:
    void addPic(const QString& filePath) {
        if (!paths.contains(filePath)) {
            pics.push_back(Pic(filePath));
            paths.insert(filePath);
        }
    }

    // 其他管理 pics 的方法
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏