知识若不分享 实在没有意义 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语言数组的一些演示代码:
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进行了一些修改和补充。编译运行后输出如下信息:
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为大家提供一个学习交流各种知识的平台