首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::sort()是如何在C++中工作的?

std::sort()是如何在C++中工作的?
EN

Stack Overflow用户
提问于 2021-03-28 15:25:13
回答 1查看 236关注 0票数 1

我正在使用编程原理和实践,使用c++作为我学习编程和C++的指南和参考。在第4.6.4章中,本书展示了这段代码片段。

代码语言:javascript
复制
int main()
{
    vector<string> words;
    for (string temp; cin >> temp; ) // read whitespace-separated words
        words.push_back(temp); // put into vector
    cout << "Number of words: " << words.size() << '\n';
    sort(words); // sort the words
    for (int i = 0; i < words.size(); ++i)
    {
        if (i == 0 || words[i-1] != words[i]) // is this a new word?
            cout << words[i] << "\n";
    }
}

在这个例子中,排序函数显示了错误,所以我在google上搜索了一下,以更好地理解排序函数,根据我所理解的,排序函数的第一个周长将在数组或向量中排序,第二个变量告诉排序函数的排序位置。

代码语言:javascript
复制
    int main()
{
    int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
    sort(arr, arr[5]);
}

正如我所理解的,代码片段应该排序到数组的6个元素,但是编译器显示了一个错误。所以我试着用不同的方法让它发挥作用。然而,只有在极客显示的方式为极客论坛工作。

代码语言:javascript
复制
 int main()
{
    int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
    int n = sizeof(arr) / sizeof(arr[0]);

    /*Here we take two parameters, the beginning of the
    array and the length n upto which we want the array to
    be sorted*/
    sort(arr, arr + n);

    cout << "\nArray after sorting using "
        "default sort is : \n";
    for (int i = 0; i < n; ++i)
        cout << arr[i] << " ";

    return 0;
}

有人能解释一下它是怎么工作的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-28 15:39:09

第一个示例是在C++20中工作的,如果排序来自范围命名空间。你正在读的书/教程中提到了吗?

sort(arr, arr[5]);在您的术语中,arr5不是"where",而是一个数组元素,即“什么”。“哪里”是地址&arr5或&arrn。您可以使用std::std( arr )和std::end(arr)代替arr和&arrn。

How std::std:分类上的示例很好地解释了排序工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66843045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档