On 05/12/2014 09:29 AM, Jonathan M Davis via Digitalmars-d-learn wrote:
On Mon, 12 May 2014 14:49:52 +0000
hane via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
and is there any way to sort char array with algorithm.sort?
---
import std.algorithm;
import std.range;
void main()
{
int[] arr = [5, 3, 7];
sort(arr); // OK
char[] arr2 = ['z', 'g', 'c'];
sort(arr2); // error
sort!q{ a[0] > b[0] }(zip(arr, arr2)); // error
}
---
I don't know what's difference between int[] and char[] in D, but
it's very unnatural.
All strings in D are treated as ranges of dchar, not their element type. This
has to with the fact that a char or wchar are only part of a character. If you
want to sort arrays of characters, you need to use dchar[].
http://stackoverflow.com/questions/12288465
http://stackoverflow.com/questions/16590650
- Jonathan M Davis
Given that he was working with pure ASCII, he should be able to cast the
array to byte[] and sort it, but I haven't tried. Also char[] isn't
string. Strings are immutable, and thus cannot be sorted in place. To
me this looks like an error in sort that he should be able to work
around with a cast.
--
Charles Hixson