digitalmars.D.bugs - D2 Associative Arrays keys has a bug
- soarowl (13/13) Sep 02 2010 private import
- bearophile (14/16) Sep 02 2010 You are right, there's a bug in the AA when not int keys are used:
- Steven Schveighoffer (3/17) Sep 02 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4201
private import
std.stdio;
static ubyte[] data = [1, 3, 5, 7, 9, 7, 5];
void main()
{
int[ubyte] set;
foreach(e; data) set[e]++;
//foreach(k, v; set) std.stdio.writef("%d: %d ", k, v);
foreach(e; set.keys.sort) std.stdio.writef("%d ", e);
//foreach(e; set.values) std.stdio.writef("%d ", e);
}
I expect result: 1 3 5 7 9
But result will be: 0 0 0 1 5 or something else, which not equals expaect
result.
Sep 02 2010
soarowl:I expect result: 1 3 5 7 9 But result will be: 0 0 0 1 5 or something else, which not equals expaect result.You are right, there's a bug in the AA when not int keys are used: import std.stdio: writeln; ubyte[] data = [1, 3, 5, 7, 9, 7, 5]; void main() { int[ubyte] set; foreach (x; data) set[x]++; writeln(set.keys); } I think there is already a bug report about this. It's an important bug, makes AAs partially useless. For your next bug reports in "freeform" like this one it is better to use D.learn newsgroup. Bye, bearophile
Sep 02 2010
On Thu, 02 Sep 2010 06:28:14 -0400, soarowl <soarowl yeah.net> wrote:
private import
std.stdio;
static ubyte[] data = [1, 3, 5, 7, 9, 7, 5];
void main()
{
int[ubyte] set;
foreach(e; data) set[e]++;
//foreach(k, v; set) std.stdio.writef("%d: %d ", k, v);
foreach(e; set.keys.sort) std.stdio.writef("%d ", e);
//foreach(e; set.values) std.stdio.writef("%d ", e);
}
I expect result: 1 3 5 7 9
But result will be: 0 0 0 1 5 or something else, which not equals
expaect result.
http://d.puremagic.com/issues/show_bug.cgi?id=4201
-Steve
Sep 02 2010









bearophile <bearophileHUGS lycos.com> 