是否可以使用' sort'内部定义'算法'用于根据ASCII值对char数组进行排序?如果是,请提供一个例子。
答案 0 :(得分: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
或std::vector
。
std::array
,而当您需要在运行时已知大小的动态数组时使用std::vector
。
答案 1 :(得分:5)
是:
char array[] = "zabgqkzg";
std::sort(array, array+sizeof(array));
有关正常工作的演示,请参阅http://ideone.com/0TkfDn。
答案 2 :(得分:3)
当然,正确的方法是使用std::begin()
和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;
}
答案 3 :(得分:0)
使用haml
的答案假设必须完全填充数组。当使用部分填充的数组运行时,它们会产生垃圾结果。
在这种情况下使用:
sizeof(charArray)
答案 4 :(得分:0)
我只是使用这个并为我回答。
char name[9] = "zxcda";
int length = 0;
for(int i=0;name[i]!='\0';i++)
length++;
sort(name , name+length);
cout << name;