Arrays 如何掌握数组的概念?
我完全理解数组的用途,但我觉得我还没有“掌握”它们。是否有人有一些关于数组的真正好的问题或读数。我用PHP和C++编程,所以如果有这些语言的例子,那是更好的,但不是必需的。p> 在图表纸上画出所有内容。Arrays 如何掌握数组的概念?,arrays,language-agnostic,Arrays,Language Agnostic,我完全理解数组的用途,但我觉得我还没有“掌握”它们。是否有人有一些关于数组的真正好的问题或读数。我用PHP和C++编程,所以如果有这些语言的例子,那是更好的,但不是必需的。p> 在图表纸上画出所有内容。 内存只是一个小盒子,在纸上用几个箭头可以比在一些复杂的标记语言中更清晰地看到它 是否有人有一些关于数组的真正好的问题或读数 尝试基于阵列 链表实施 实现堆栈、队列等,然后使用堆栈模拟队列等 堆 尝试手动(无内置方法)使用数组进行排序(bubblesort是一个很好的选择)很多人一开始似乎都在为
内存只是一个小盒子,在纸上用几个箭头可以比在一些复杂的标记语言中更清晰地看到它 是否有人有一些关于数组的真正好的问题或读数 尝试基于阵列
- 链表实施
- 实现堆栈、队列等,然后使用堆栈模拟队列等
- 堆
type
arrayA=array[1..50] of integer;
arrayB=array[1..50] of arrayA;
arrayB=array[1..50,1..50] of integer; //an equivalent declaration in Pascal to the above two
- 统计数据(0)可能是力量
- 属性(1)可以是灵巧
- 统计数据(2)可能是智力
- 统计数据(0,0)-这是我目前的实力
- 统计(0,1)-这是我的正常力量
- 统计(0,2)-这是力量药剂消耗前的回合数
- 统计数据(1,0)-这是我目前的灵巧度
- 属性(0,0,0)-角色0的当前强度
- 属性(1,1,0)-角色1的当前灵巧度
Const Strength = 0
Const Dexterity = 1
Const Intelligence = 2
Const CurrentValue = 0
Const NormalValue = 1
Const PotionTurns = 2
然后我可以做:
Stats(1, Dexterity, NormalValue) = 5 'For character 1, set the normalvalue of dex to 5.
关于数组的更多想法。。。至少在我居住的.Net世界中,我们大多数人不必在日常生活中太频繁地使用它们,因为它们正慢慢地被降级为更复杂的数据结构(如集合)的基础
事实上,如果我要实现角色统计,实际上我不会使用数组
但是,还是要注意它们,因为它们速度非常快,而且在某些情况下它们是非常宝贵的。数组是一个连续的内存块,专门用于相同类型的N个项目,其中N是一个表示项目数量的固定数字。为了扩展数组(因为数组的大小是固定的),可以使用C函数realloc(..)。在C++中,可以通过创建一个新的、更大的数组并将旧数组的内容复制到新数组中来手动重新分配数组(昂贵的操作)。p>
现代语言有替代数组的选项(以克服数组固有的局限性)。在C++中,可以使用标准模板库(STL)来实现此目的;STL“vector”数据类型是C++中标准数组的典型替换。与平台相关的API(如MFC)具有内置结构(如CArrayList),可提供更丰富的阵列使用体验。;-) 我将尝试以基本形式解释我能解释的最好的数组 数组基本上是一种存储数据的方法。例如,如果您想要购物项目列表,我们将使用一维数组: [0]-“面包” [1] -“牛奶” [2] -“鸡蛋” [3] -“黄油” . . [n] -“糖果” 每个索引0,1,2,3,…n保存一个特定的数据。可以看到的数据表示为字符串。现在,我不能使用以下内容: [n+1]=1000 因为这将把一个整数作为索引n+1,编译器将告诉您这不好,您需要解决这个问题 转到矩阵或二维数组。拿一张正方形的纸,就像你用来做数学的一样,画一个笛卡尔坐标系和一些点。把坐标放在不同的纸上,旁边放一个1。例如: [0,0]=1 [0,1]=1 [2,3]=1 这意味着在索引[0,0],[0,1],[2,3]处我有1。陈述如下: 矩阵形式的笛卡尔系统:
1) 2) 3)
1) 1 1 0
2) 0 0 1
3) 0 0 0
我只使用了简单的数组来说明它们是什么,例如,如果你想使用3D,它的数据结构将是一个矩阵数组,也就是一个列表,它将每个笛卡尔位置保持在一个特定的高度
如果我们将10作为高度,并将相同的点作为上面的点,它将类似于:
for i:=1 to n do
element[i]:=element[i]+1;
Table=array[1..50, 1..50, 0..1] of integer;
[10,0,0]-1
[10,0,1]-1
[10,2,3]-1
如果您想掌握一种方法:获取一个简单的问题列表,并尝试使用任何类型的数组来实现它们。没有快速的方法,只有耐心和练习。好吧,一维数组就是一组变量。如果你有很多东西,并且你喜欢节省时间和空间,那么这很有用。在功能上,
element1:=5;
element2:=6;
element3:=7;
...
就是说
element[1]:=5;
element[2]:=6;
element[3]:=7;
...
但现在电脑知道你在说什么,你可以写一些东西,比如:
for i:=1 to n do
element[i]:=element[i]+1;
Table=array[1..50, 1..50, 0..1] of integer;
接下来,二维数组稍微复杂一些,但可以看作是数组的数组。所以我们可以吃点东西