c++ 将列表按字母顺序降序排序并打印列表

vfh0ocws  于 2023-05-02  发布在  其他
关注(0)|答案(2)|浏览(193)

a.在列表中存储5个名称。允许用户输入每个名称。
B.按字母升序对列表进行排序,并打印列表。c.将列表按字母顺序降序排序,并打印列表。
d.确保您的代码可以在没有bug或错误的情况下执行。
我卡在排序列表中的降序请帮助:(
下面是我的升序源代码。

#include <iostream>
#include <set>
#include <algorithm>

void print(const std::string& item)
{
    std::cout << item << std::endl;
}

int main()
{
    std::set<std::string> sortedItems;

    for(int i = 1; i <= 5; ++i)
    {
        std::string name;
        std::cout << i << ". ";
        std::cin >> name;

        sortedItems.insert(name);
    }

    std::for_each(sortedItems.begin(), sortedItems.end(), &print);
    return 0;
}
t1rydlwq

t1rydlwq1#

要对列表进行排序,你不需要std::set,你可以将名称存储在std::vector中,然后使用头算法中的函数std::sort。还有一个版本的函数接受一个 predicate ,因此您可以使用此 predicate 反转顺序,指定反向比较。查看sort的文档。还可以看看在header函数中定义的greater--这是一个 predicate ,可以用来反转排序顺序。看看这个short example on ideone

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <functional>
using namespace std;

int main() {
    vector<string> test;
    test.push_back("a");
    test.push_back("c");
    test.push_back("b");
    sort(test.begin(), test.end());
    for (unsigned i = 0; i < test.size(); ++i) {
        cout << test[i] << endl;
    }
    sort(test.begin(), test.end(), greater<string>());
    for (unsigned i = 0; i < test.size(); ++i) {
        cout << test[i] << endl;
    }
    return 0;
}
mxg2im7a

mxg2im7a2#

要以相反的顺序显示set,您可以用途:

std::for_each(sortedItems.rbegin(), sortedItems.rend(), &print);

相关问题