D语言中国主页  D语言编辑器SciTE4D   DWin库 D语言官方网站
D语言编译器1.x最新版 OpenSource   Tango   webnews  Wiki

查看完整版本: D语言基础之Arrays

yidabu 2007-4-27 07:41

D语言基础之Arrays

D语言基础之Arrays知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070427点击下面网址查看原文:http://www.d-programming-language-china.org        by:        燕良        from:        http://blog.csdn.net/yanonsoftware/archive/2007/01/11/1480432.aspx        以下是D语言数组的一些演示代码:        [Copy to clipboard] [ - ]CODE:                                import std.stdio;                                void main()                {                    tryArrays();                }                                void tryArrays()                {                    // 指针和C语言的类似,由于没有bounds checking,所以应尽量使用动态数组,out,ref参数                    int *p;                    writefln(p);                                    int[3] s = [3,4,5];    //static array, 总容量不可以超过16M                    int[] d;    // dynamic array                                    int[4][3] b;    // 3个int型数组,每个数组有4个元素                    int[][5] c;    // 5个int型动态数组                                    int[6] aa;                    aa[0..3] = 1;                    aa[3..6] = 2;                    writefln("aa:");                    foreach(int e; aa)                        writef(e);                    writefln();                                    // ~可以用来连接数组                    d = s[1..$] ~ aa;                    writefln("d:");                    foreach(int e; d)                        writef(e);                    writefln(",",d.length);                                    /* 数组切片                    D语言论坛 http://www.d-programming-language-china.org 补充                    d = s;是一个隐含的切片,相当于d = s[];切片只是原数组的引用而不复制数据                    下面的例子,改变s也就改变了d;                    */                    d = s;                    s[2]=7;                    writefln("d:");                    foreach(int e;d)                        writef(e);                    writefln();                                    // ~操作符用来连接数组                    d ~= s;                    writefln("d ~=s, d:");                    foreach(int e;d)                        writef(e);                    writefln();                                    // 数组属性                    d.sort;                    d.reverse;                    writefln("d=",d," d.sizeof=",                                    d.sizeof," d.length=",                                    d.length," d.ptr=",                                    d.ptr," d.dup=",                                    d.dup,",");                    int* pD = d.ptr;                                    //------------------------------------                    // Associative Arrays类似于STL的map或者hash_table                    int[char[]] str2int;                    str2int["abc"] = 100;                    str2int["defg"] = 200;                    str2int["hij"] = 200;                    writefln("abc=",str2int["abc"]);                                    str2int.remove("abc");                                    // 使用in可以得到一个value指针                    int* pVal = ("abc" in str2int);                    assert(pVal == null);                    pVal = ("defg" in str2int);                    writefln("defg=",*pVal);                                    /**//*如果使用class作为key,则必须重载Object的下列函数:                    hash_t toHash()                    int opEquals(Object)                    int opCmp(Object)                                     如果struct作为key, 则必须实现:                    hash_t toHash()                    int opEquals(S) or int opEquals(S*)                    int opCmp(S) or int opCmp(S*)                    */                                    // Properties                    writefln(str2int.sizeof, ",",                                    str2int.length);                    char[][] keys = str2int.keys;                    writefln("str2int.keys=",keys);                                    int[] values = str2int.values;                    writefln("str2int.values=",values);                }                D语言论坛 http://www.d-programming-language-china.org 补充:        上面例子代码d-programming-language-china.org进行了一些修改和补充。编译运行后输出如下信息:        QUOTE:                                0000                aa:                111222                d:                45111222,8                d:                347                d ~=s, d:                347347                d=[7,7,4,4,3,3] d.sizeof=8 d.length=6 d.ptr=913FE0 d.dup=[0007,0007,0004,0004,0003,0003],                abc=100                defg=200                4,2                str2int.keys=[hij,defg]                str2int.values=[200,200]        ( lastupdate:20070427 最新文章请访问http://www.d-programming-language-china.org )关于一大步成功社区:yidabu提倡在交流中学习,在分享中提高收集感兴趣的知识,写下心得,通过网络与别人一起分享理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台
页: [1]
查看完整版本: D语言基础之Arrays