`
tomqyp
  • 浏览: 26146 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

笔记 关于D关联数组可能遇到的一个陷阱

阅读更多

关于D关联数组可能遇到的一个陷阱
 
前两天想当然的写了类似如下代码:
int[X] n;
n[x] = n.length;
按C的计算顺序此时n[x]的值应该是n的长度。
 
可是在D中,如果x不存在于n中,此时n的长度为n.length+1,即在先在n中插入一个新对象,再设置对象的值。
在D还没有用的很顺手的调试器的情况下,写出这样的代码仅靠单元测试很难找出bug的位置的,所以应该注意避免写出这样的代码。
分享到:
评论
3 楼 lifc 2010-02-08  
有点push sp和i=i++的味道,不久之前刚犯过一个类似的错误:保存线程上下文做迁移时push esp,认为存入的是改变之前的数值(对8086的印象太深了),后来用qemu虚拟机调试才发现问题:)
2 楼 tomqyp 2010-01-31  
以前都是存在电脑上,后来一想放在圈子里也许还能方便别人就干脆贴上来了
1 楼 hqs7636 2010-01-30  
不错,谢谢

相关推荐

    [原创] SV中数组代码实践笔记

    例如,如果我们想创建一个存储16个整数的数组,可以写成`int arr[16];`。数组的下标通常从0开始。 2. **初始化**:数组可以在声明时初始化,也可以在程序运行时动态赋值。静态初始化如`int arr[4] = '{10, 20, 30, ...

    [笔记]认识Javascript数组

    个人多年前学习笔记,Javascript数组,初学者可以看看,高手就不用看了

    学习笔记:三数组实现的HashMap

    - 这种方式可能减少了链表的使用,因为每个键值对只需要在第三个数组中存储一个索引,而不是整个对象的引用,可能会节省内存。 3. **冲突解决**: - 在标准HashMap中,冲突通过开放寻址法或链地址法解决。三数组...

    PHP开发笔记系列(九)- 数组(三)

    多维数组是包含一个或多个数组的数组,可以看作是数组的数组。这在处理复杂数据结构时特别有用。例如,我们可以创建一个二维数组来表示表格数据: ```php $array = array( array('name' => 'John', 'age' => 25), ...

    PHP开发笔记系列(九)- 数组(一)

    - **合并数组**:使用`array_merge()`将两个或更多数组合并为一个新的数组。 - **排序数组**:`sort()`对索引数组进行升序排序,`rsort()`则用于降序。关联数组可以使用`asort()`和`ksort()`按值和键排序。 5. **...

    C++数组的学习笔记(入门).docx

    定义了一个名为str的字符数组,大小为6,可以存储一个长度为5的字符串和一个结束符‘\0’。 字符数组的初始化可以在定义时赋初值,格式为:char arrayName [ arraySize1 ]={字符,字符,......};例如:char str[6]=...

    C++学习笔记 数组

    C++学习随笔,学写了C++的有关知识,有些代码敲打气啦比较费劲,现在分享一个数组的代码

    C语言学习笔记变量数组指针

    访问数组中的元素,可以通过索引来完成,索引从0开始,如`numbers[0]`表示数组的第一个元素。 “类型”在C语言中非常重要,因为每种变量都必须有特定的类型,决定了它能存储的数据范围和执行的操作。例如,`int`...

    C语言笔记——数组.docx

    数组中的每一个分量都被称之为一个元素,数组元素的下标表示其在数组中所处于的位置。数组中的元素可以如变量一样参与赋值、运算、输入和输出等操作。 数组的初始化 数组的初始化是在编译阶段进行的。主要的方法是...

    算法笔记,将有序数组转为二叉搜索树

    给定一个整数数组 nums,其中元素已经按升序进行了排序,请将其转换为一棵高度平衡的二叉搜索树。高度平衡二叉树是一棵满足每个节点的左右两个子树的高度差的绝对值不超过 1 的二叉树。 解题思路 为了解决这个问题...

    [学习笔记PPT]matlab数组矩阵

    3. 数组逻辑:`A > 5`将产生一个逻辑数组,表示A中的元素是否大于5,这在条件操作和索引选择中非常有用。 以上只是MATLAB数组矩阵操作的基本概念,实际使用中还会涉及更复杂的应用,如稀疏矩阵、单元数组、结构数组...

    【第4章:数组与方法】_数组的定义及使用笔记

    【第4章:数组与方法】_数组的定义及使用笔记

    C语言指针数组函数笔记

    "C语言指针数组函数笔记" 本笔记主要介绍了C语言中的指针和数组相关知识点,旨在帮助读者更好地理解和应用C语言中的指针和数组。 一、变量和内存 在C语言中,变量是存储数据的基本单元。变量可以是整数、浮点数、...

    java学习笔记(排序,数组)

    4. **快速排序**:由分治思想衍生出的高效排序算法,选取一个基准元素,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后递归对两部分进行排序。平均时间复杂度为O(n log n)。 5. **归并...

    VBA数组的学习笔记,让你更好的了解数组

    这里创建了一个二维整型数组`MyArray`,第一维大小为11(0到10),第二维同样为11。 **2. 动态数组** 如果数组的大小可以在程序运行过程中被修改,则称之为动态数组。使用`ReDim`语句可以改变动态数组的大小。例如...

    labview学习笔记7:labview二维数组搜索匹配

    - 输出:输出结果可能是包含匹配行的数组,或者是一个布尔值,表示是否找到匹配项。 2. **遍历二维数组**:为了搜索二维数组,我们需要逐行逐列检查每个元素。这可以通过循环结构实现,如For Loop或While Loop,...

    重看笔记10.7 模块、数组.rar

    例如,`arr[0]`获取第一个元素,`arr[1:3]`切片获取第二个和第三个元素,`arr.extend(other_array)`用于连接两个数组,`arr.sort()`对数组进行排序。如果需要进行更复杂的数学运算,如矩阵操作,Python推荐使用`...

    关于JavaScript的数组排序

    在学习JavaScript中,做的笔记,关于数组排序的,具体是按字母升序排序,按数字升序或降序排序。如有需要,请自行下载。

    javascript中的数组对象以及json学习笔记

    数组有一些内置的方法和属性,如`length`用于获取数组长度,`push`用于在数组末尾添加元素,`pop`用于移除并返回数组最后一个元素,`shift`用于移除并返回数组的第一个元素,`unshift`用于在数组开头添加元素,`...

Global site tag (gtag.js) - Google Analytics