D语言游戏编程(6):D语言基础之Arrays

以下是D语言数组的一些演示代码:
import std.stdio;

void  main()
{
    tryArrays();
}


void  tryArrays()
{
    
// 指针和C语言的类似,由于没有bounds checking,所以应尽量使用动态数组,out,inout参数
    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;
    
foreach(int e; aa)
        writef(e);
    writefln();
    
    
// ~可以用来连接数组
    d = s[1..$] ~ aa;
    
foreach(int e; d)
        writef(e);
    writefln(
",",d.length);
    
    
// 数组拷贝
    d = s;
    
foreach(int e;d)
        writef(e);
    writefln();
    
    
// ~操作符用来连接数组
    d ~= s;
    
foreach(int e;d)
        writef(e);
    writefln();
    
    
// 数组属性
    d.sort;
    d.reverse;
    writefln(d,
"",
                    d.
sizeof,"",
                    d.length,
"",
                    d.ptr,
",",
                    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(str2int[
"abc"]);
    
    str2int.remove(
"abc");
    
    
// 使用in可以得到一个value指针
    int *pVal = ("abc" in str2int);
    assert(pVal 
== null);
    pVal 
= ("defg" in str2int);
    writefln(
*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(keys);
    
    
int[] values = str2int.values;
    writefln(values);
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值