对char数组使用'sort'(C ++)

时间:2013-01-01 15:56:05

标签: c++ arrays sorting

是否可以使用' sort'内部定义'算法'用于根据ASCII值对char数组进行排序?如果是,请提供一个例子。

5 个答案:

答案 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::arraystd::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;