c++ - 简单的 std::sort 不工作

标签 c++ arrays sorting c++11 visual-c++

我有以下代码:

int main()
{
    int intArr[] = { 1,5,3 };
    //auto f = [](auto a, auto b) {return a < b;};
    //std::sort(intArr, intArr + 2, f);
    std::sort(intArr, intArr + 2);
    for (int& temp : intArr)
        cout << temp << endl;
}

但是,输出未排序(例如,输出为 1 5 3)。将 std::sort 与 lambda 一起使用时的结果相同。是什么导致了这种行为?

我正在使用 Visual C++ 编译器 (Visual Studio 2015)。

最佳答案

在采用范围的 STL 算法中,如果你想提供整个范围,你必须给出一个结束元素,而不是范围本身的结束,因此在你的情况下:

std::sort(intArr, intArr + 3);

或者

std::sort(intArr, intArr + sizeof(intArr) / sizeof(int));

或者更好:

std::sort(std::begin(intArr), std::end(intArr));

关于c++ - 简单的 std::sort 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735529/

相关文章:

python - 将文件元素读入 3 个不同的数组

Php natsort 按二维数组

java - 仅通过单个循环进行冒泡排序

c++ - 继承层次结构与多重继承 (C++)

c++ - 如何使用 C++ 在 Windows 7 中将显示设置设置为扩展模式?

c++ - 虚拟方法优化

java - 在 doInBackground 方法中使用比较器对 ArrayList 进行排序时出错

c++ - 如何在编译时排除单元测试

php - 性能问题(嵌套foreach循环,大数据集)

c - 仅当文件存在时才将文件内容加载到结构中或使用默认值