【发布时间】:2014-11-05 08:42:56
【问题描述】:
所以在 Qt 中编程时,我喜欢尽可能使用 Qt 实现。
据我所知,std::unique_ptr 没有 Qt 版本,还是有?
如果 Qt 不存在,那么在 Qt 中产生“相同”结果的替代方案是什么?
【问题讨论】:
-
你为什么特别想要一个Qt版本?您是否尝试在没有标准库的情况下编写 C++?
-
@MikeSeymour 并不特别,但是当 Qt 实现涵盖所有内容时,不需要将 std 与 Qt 混合使用 :)
-
@deW1 :这不是它的工作原理,STL 是您每次解决问题时都应该使用的东西。它写得很好,任何其他库都不能像 STL 那样有效。我建议您仅将 Qt 实现用于 STL 中没有解决方案的事物。
-
为了反驳关于使用标准库/STL 的观点,我认为一致性提高了可读性,这对于维护代码很重要。因此,如果您在整个代码中使用
QSharedPointer和QVector和QMap等,如果您可以改用QScopedPointer,则抛出一个std::unique_ptr可能会让读者失望。 -
我觉得这忽略了为什么 QT 容器继续存在并且没有被 STL 淘汰的重点。基于 QT 的对象无法复制或移动,因为它们的操作符被设计删除,因此它们需要专门的容器。这部分是为了确保以 QObject 为目标的信号和槽仍然可以工作,但是,限制使得一些容器不太理想。我认为你应该为工作使用正确的类或结构,而不是仅仅为了统一而统一。