【发布时间】:2015-08-26 19:38:58
【问题描述】:
我的具体问题是我有一个 QMultiHash<Foo,Bar*> private 成员,我想提供对哈希值的访问,但对项目的 const 版本提供访问权限,声明:
QList<const Bar*> getBars(Foo f) const;
有没有一种更简洁/更有效的方式来“约束”Qt 容器中的项目,而不是使用 const 项目创建一个丑陋/低效的新容器并进行复制来自源的指针(在这种情况下为QMultiHash<K,V>::values())?
恐怕答案可能是“不”,但我想确保我没有错过一些 Qt/C++(03) 语法魔法来做到这一点。
【问题讨论】:
-
见stackoverflow.com/questions/10265695/…我不知道解决方案(除了可能是一个巨大的丑陋黑客),但
for循环有这么大吗?它只是复制指针,我怀疑它会影响您的性能 - 除非QList很大并且您有非常高的性能要求。 -
在这种特殊情况下,这没什么大不了的(我已经继续并以这种方式实现了它)。但它冒犯了我的风格,在我的应用程序的其他情况下(交互式数据可视化),我可能需要对大约 1000-10000 个图表字形对象的容器进行交互式 UI 操作,其中我正在检查但不更改字形对象没有滞后 UI 只是为了获得一个 const 指针的容器。