gpt4 book ai didi

c++ - Qt中如何使用STL算法?

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:31 24 4
gpt4 key购买 nike

在阅读“c++ gui programming eith Qt 4 , second edition”时,我遇到了这个话题: “STL header 提供了一套更完整的通用算法。这些算法可以用在 Qt 容器和 STL 容器上。如果 STL 实现在你的所有平台上都可用,那么可能没有理由在 Qt 时避免使用 STL 算法。缺少等效算法。”

它指出 STL 的通用算法(在“算法”标题中定义)也可以与 Qt 容器一起使用。但是当我运行下面的代码时,它显示了一个错误“排序:找不到标识符”:

#include <QApplication>
#include <algorithm>
#include <QVector>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QVector<int>vec{9,6,10,5,7};
sort(vec.begin(),vec.end());
return a.exec();
}

有什么办法可以不使用 Qt 算法来修复它吗?

最佳答案

扩展@Chernobyl 的回答:C++ 库将所有​​标准容器、算法等放入名为 std 的命名空间中。这意味着要使用它们,您必须将它们带入全局命名空间(using namespace std;using std::sort)或者自己限定名称 std::sort(vec.begin(), vec.end());

两者都可以。这样做的原因是,否则标准库中的所有标识符都会有效地成为“保留字”,并且您将无法(轻松地)在您的程序中使用它们供您自己使用。例如,您没有理由不能自己编写一个名为 sort 的函数来对特定数据结构进行排序。然后 sort(..) 将调用您的例程,而 std::sort(..) 将调用标准库中的例程。 finderaseremovestringlist 等操作同上.

关于c++ - Qt中如何使用STL算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391115/

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