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为大家提供一个学习交流各种知识的平台