gpt4 book ai didi

c++ - QMultihash 的持久化

转载 作者:行者123 更新时间:2023-11-28 07:34:15 24 4
gpt4 key购买 nike

我想知道保存 QMultihash 的最佳方法是什么? .我正在考虑将其保存为 INI 文件,使用 QSettings ,但是有没有更好的方法来做到这一点,让它也很容易加载?可能是序列化?

顺便说一句,我正在尝试做的是一个小的 UI,它可以管理文件夹中的图像,供多种算法使用,并跟踪哪个算法正在使用哪些图像。

谢谢!

最佳答案

没有标准的方法来做到这一点,特别是对于任意键和值类型。

这是一个如何转换 QMultiHash<int, double> 的示例至 QVariant并返回:

QVariant convert(QMultiHash<int, double> hash) {
QVariantList variant_hash;
for(QMultiHash<int, double>::Iterator it = hash.begin(); it != hash.end(); ++it) {
QVariantList list;
list << it.key();
list << it.value();
variant_hash << QVariant(list);
}
return variant_hash;
}

QMultiHash<int, double> convert_back(QVariant variant_hash) {
QMultiHash<int, double> new_hash;
foreach(QVariant item, variant_hash.toList()) {
new_hash.insertMulti(item.toList()[0].toInt(), item.toList()[1].toDouble());
}
return new_hash;
}

它将散列的每个项目存储为具有 2 个项目(键和值)的 QVariantList。

任何 QVariant 都可以使用 QSettings 保存。如果 QVariant 不支持您的键和值类型,您需要手动添加它们的支持。

如果您的 key 类型是 QString,则代码可以简化,因为 QHash<QString, QVariant>可以很容易地转换为 QVariant。

请注意,QMultiHash 只是一个方便的类,可以使用每个键具有多个值的常规 QHash。但是 QHash 对此也具有完整的功能。因此,为 QHash 找到的任何解决方案也可以应用于 QMultiHash。

关于c++ - QMultihash 的持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17044034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com