一个可以变长,变维的数组(只可以变大),用来替代多维数组
基本做法与Array相似
set(Object value, int... pos):放入数值,第一个参数是要放入的内容,其余是下标
get(int... pos):取出数值,参数是下标,返回那个下标指定的数值
class Array {
private Object[] array = new Object[0];
private int length = 0;
public void set(Object value, int... pos) {
set(value,pos,0);
}
private void set(Object value,int[] pos, int begin) {
if(pos[begin] >= array.length) {
changeCapacity(pos[begin] + getNewCount(array.length));
length = pos[begin] + 1;
}
if(pos.length == begin+1) array[pos[begin]] = value;
else {
if(array[pos[begin]] == null) array[pos[begin]] = new Array();
((Array)array[pos[begin]]).set(value,pos,++begin);
}
}
public Object get(int... pos) {
return get(pos,0);
}
private Object get(int[] pos, int begin){
if(pos.length == begin+1) return array[pos[begin]];
else return ((Array)array[pos[begin]]).get(pos,++begin);
}
public int getLength(int... pos) {
return getLength(pos,0);
}
public int getLength(int[] pos, int begin) {
if(pos.length == begin) return length;
else return ((Array)array[pos[begin]]).getLength(pos,++begin);
}
private void changeCapacity(int length) {
Object[] temp = new Object[length];
for(int i=0; i<array.length; i++) {
temp[i] = array[i];
}
array = temp;
}
private int getNewCount(int lenght) {
return 10;
}
}
分享到:
相关推荐
在TIA博途中,变长数组的声明通常以`Array[*] of 数据类型`的形式出现,其中`*`表示数组长度可变。 使用变长数组时,需要注意以下几点: 1. **接口参数定义**:当你在FC或FB的接口中使用变长数组时,应声明为`...
1. 变长一维数组 在C++中,传统的数组在声明时需要指定大小,但变长数组可以在运行时根据用户输入或其他条件动态分配内存。以下是一个简单的示例: ```cpp int len; cin >> len; int *p = new int[len]; // ... ...
- 从S7-1200 V4.2开始,FC的Input/Output/InOut以及FB的InOut可以定义形如Array[*]这样的变长数组。 - 要求必须是优化FC/FB块,在调用FC/FB的实参中可以填写任意数据类型相同的数组变量。 - 也可以定义多维变长...
在编程领域,可变长数组(也称为动态数组)和字典树(又称Trie树或前缀树)是两种非常重要的数据结构。它们在不同的场景下有着广泛的应用,尤其在处理大量数据时能展现出高效的性能。 首先,我们来详细讨论可变长...
总结起来,"类模板实践-可变长数组类"这个项目旨在通过实现一个自定义的类模板`Array`,让初学者理解C++中的类模板和动态数组的概念,同时掌握如何在C++中正确管理内存和实现类型安全的接口。通过这个实践,可以提升...
Java数组传递及可变参数操作实例详解 Java 数组传递是指在方法之间传递数组对象的引用,而不是传递数组对象本身。这意味着,方法中对数组的修改将会影响原数组。在 Java 中,所有对象都是通过引用进行操作的,而...
一维数组在内存中是连续存储的,这使得对数组元素的访问和操作变得高效。 **定义格式**: ```c 类型说明符 数组名[常量表达式]; ``` - **类型说明符**:指定数组中元素的数据类型,如`int`、`float`、`char`等。 - ...
这样的方法允许我们更灵活地管理内存,特别是在处理大小未知或可变的二维数组时。 文档部分可能会解释这些操作的逻辑和步骤,以及如何将它们与数据结构课程中的其他概念(如链表、栈、队列等)结合使用。它还可能...
首先,我们需要将二维数组转换为一维数组,这可以通过`implode`或`join`函数完成,然后使用`array_unique`去除重复的字符串,最后再将一维数组转换回二维。这里是一个例子: ```php function array_unique_fb($...
我们可以使用array_create函数创建一个可变数组,并使用array_free函数释放数组的内存。array_size函数可以获取数组的大小,array_at函数可以获取数组的某个元素。 在main函数中,我们创建了一个大小为100的可变...
例如,两个三维数组可以进行元素级别的加法、减法、乘法和除法,如`result = array1 + array2`。这使得对整个数据集进行计算变得十分便捷。 三维数组的可视化是分析数据的关键步骤。MATLAB提供了`volumeViewer`函数...
为了解决这个问题,C99标准引入了一个新的概念:可变长数组(Variable-Length Array,简称VLA)。VLA允许数组的大小在运行时确定,这为处理大小不确定的数据集提供了极大的便利。然而,VLA也带来了一些潜在的问题和...
#### 三、示例二:可变大小的二维数组 接下来,我们来看一个更复杂的例子,创建一个每一行大小不相同的二维数组: ```cpp #include using std::cin; using std::cout; using std::endl; int main() { int i, j;...
gcc xxx.c vsArray.c array_t_s:可变大小的数组的类型 array_t:一个指针类型的别名,访问其内容时,遵循array_t_s的访问规则 函数的功能和使用方法都有注释 新手一个,代码写的不规范欢迎点评
这种方法适用于数组大小可变或初值需要通过计算得到的情况。 **示例**: ```c int array[3][4]; int i, j; for (i = 0; i ; i++) { for (j = 0; j ; j++) { array[i][j] = i * 4 + j + 1; // 计算并赋值 } } ```...
如果需要传递可变大小的数组或希望更灵活地管理内存,二级指针是一个更好的选择。 ### 结语 在 C/C++ 中,根据不同的需求选择合适的方法来传递多维数组至关重要。正确地理解和掌握数组和指针在函数参数中的行为,...
在方法内部,数组是可变的,可以修改其元素。 8. **动态数组ArrayList**: - 虽然基本类型的数组长度固定,但可以使用`ArrayList`类创建动态大小的数组。`ArrayList`继承自`List`接口,提供了添加、删除、查找和...
1. **数组Array分页**: 在JavaScript中,数组是最基础的数据结构之一。要对数组进行分页,我们需要计算每一页的数据量(通常称为“每页条目数”),然后根据当前页数获取对应范围的元素。例如,假设我们有100个...
在这个例子中,我们创建了一个可变数组`mulArrayD1`,然后在循环中动态添加每个一维数组`arrayD2`。同样,我们可以通过索引来访问这些元素: ```objc NSLog(@"array2d[2][1]:%@", mulArrayD1[2][1]); NSLog(@"array...
对于二维列表,操作方式基本相同,但由于列表本身是可变的,不能直接作为集合的元素,所以我们需要先将每个列表转换为元组。以下是如何操作的示例: ```python # 创建一个二维列表 list1 = [[1, 2], [3, 4], [5, 6]...