是否可以使用std::sort
内部定义的方式根据 ASCII 值对数组<algorithm>
进行排序?char
如果是,请举例说明。
问问题
43157 次
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::array
or 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 回答