我正在尝试用这种方式对字符串数组进行排序。但是数组的第一个字符串打印不正确。我怎样才能用一种简单的方式来编写它呢?我需要用它来进行竞争性的编程。所以,如果代码简短就好了。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
string s[] = {"midnight", "Coder", "comp", "Wedn", "Top", "at"};
int n = sizeof(s)/sizeof(s[0]);
sort(s->begin(), s->end());
for (int i = 0; i < n; i++)
{
cout<<s[i]<<" ";
}
return 0;
}
输出结果:dghiimnt编码器组件WednTop位于
预期输出:午夜编码员大会Wedn Top
2条答案
按热度按时间g6ll5ycj1#
在C++20中,你可以这样做:
std::greater{}
意味着较大的元素应该放在前面(与默认的std::less{}
相反)。&std::string::size
意味着我们按照.size()
的返回值排序,而不是直接比较元素。我还修正了一些风格问题。
tjrkku2a2#
一种方法(可能是最简单的)是使用lambda,如下所示。
working demo