8

是否可以使用std::sort内部定义的方式根据 ASCII 值对数组<algorithm>进行排序?char如果是,请举例说明。

4

5 回答 5

8

是的。这绝对是可能的。您只需编写一些示例代码就可以知道这一点,例如:

char charArray[] = {'A','Z', 'K', 'L' };

size_t arraySize = sizeof(charArray)/sizeof(*charArray);

std::sort(charArray, charArray+arraySize);

//print charArray : it will print all chars in ascending order.

顺便说一句,您应该避免使用 c 样式的数组,并且应该更喜欢使用std::arrayor std::vector

std::array当您在编译时知道大小时std::vector使用,而当您需要在运行时知道其大小的动态数组时使用。

于 2013-01-01T15:57:36.683 回答
5

是的:

char array[] = "zabgqkzg";

std::sort(array, array+sizeof(array));

有关工作演示,请参阅http://ideone.com/0TkfDn 。

于 2013-01-01T15:59:20.123 回答
3

当然,正确的方法是使用std::begin()and std::end()

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

如果你没有 C++ 2011 编译器,你可以实现相应begin()的和end()函数,例如:

template <typename T, int Size>
T* end(T (&array)[Size]) {
    return array + Size;
}
于 2013-01-01T16:04:08.850 回答
0

我只是使用它并为我回答。

char name[9] = "zxcda";
int length = 0;
for(int i=0;name[i]!='\0';i++)
    length++;
sort(name , name+length);
cout << name;
于 2021-07-07T06:58:08.927 回答
0

使用的答案sizeof(charArray)假定数组必须完全填充。当使用部分填充的数组运行时,它们会产生垃圾结果。

在这种情况下使用:

sort(str, str + strlen(str));
于 2017-10-14T13:58:34.187 回答