通过加入现有的 QHash 来初始化 const QHash
Posted
技术标签:
【中文标题】通过加入现有的 QHash 来初始化 const QHash【英文标题】:Initializing const QHash by joining with an existing QHash 【发布时间】:2018-05-23 16:26:00 【问题描述】:在我的项目中,我需要几个常量散列容器,它们是在类和函数之外定义的,因此是全局的。这样,其中一些容器应该重叠。对于列表,我将执行以下操作以将第二个 const
列表与第一个 const
列表结合起来:
const QList<QString> data1(
"one",
"two",
"three"
);
const QList<QString> data2 =
data1 +
QList<QString>(
"four",
"five"
);
但这不适用于 QHash,因为它们没有 +
运算符。相反,它们有unite
成员函数,但我不能使用它,因为容器是const
。所以我想要的是这样的:
const QHash<QString,int> hash1
"one", 1,
"two", 2,
"three", 3
;
const QHash<QString,int> hash2 =
hash1 +
QHash<QString,int>(
"four", 4,
"five", 5
);
或
const QHash<QString,int> hash2(
"four", 4,
"five", 5
).unite(hash1);
【问题讨论】:
【参考方案1】:const QHash<QString,int> hash2 = QHash<QString,int>
"four", 4,
"five", 5
.unite(hash1);
短一点
const auto hash2 = QHash<QString,int>
"four", 4,
"five", 5
.unite(hash1);
如果您记得operator+
是如何扩展的,那么您就会明白unite
的调用或operator+
的调用在语法上是相同的。
const QList<QString> data2 =
data1.operator+(
QList<QString>(
"four",
"five"
));
【讨论】:
以上是关于通过加入现有的 QHash 来初始化 const QHash的主要内容,如果未能解决你的问题,请参考以下文章