C 与Java中的ArrayList中的动态数组

Dynamic Array in C++ vs ArrayList in Java

本文关键字:动态 数组 ArrayList Java 中的      更新时间:2023-10-16

我是C 的新手。我正在研究课程问题。我们必须使用动态数组来读取文件。

这是我的简单问题。

  1. 动态数组是否意味着使用指针?这意味着我们指出了我们的新数组。
  2. 在Java中,可以创建ArrayList,并动态大小更改。但是对我来说,在C 中,是否使用动态数组意味着将数组的大小设置为大数字,然后动态分配该数组?
  3. 是否可以从动态阵列中砍掉多余的索引?因此,删除末端的数组是我在C 中唯一的选择?

谢谢,只能使用指针和动态阵列。谢谢。

Java ArrayList仅与C 向量相媲美。一个普通的动态数组不会在运行时更改其大小,因此,如果您在C 中声明动态int数组:

int *arr = new int[10];

该数组的大小将保持在10。

但是,如果您使用向量:

std::vector<int> arr(10);

然后,当该向量填充超过10个元素时,向量对象会自动为其分配更多的内存。

为了回答您的问题,动态数组意味着使用指针来跟踪已放置堆分配的数组的内存位置。但是,如果您使用向量,则可以为您内部处理

我想动态数组可以参考。看看您必须做什么并决定。是否可以使用固定大小的阵列的场景?我猜想向量将是最好的,因为您可能不提前知道文件有多大。

std::vector<string> words;

也仅对于您的信息,向量类只是存储一个动态分配的数组的指针。每当您需要更多的空间,复制旧数组中的数据并删除数据时,它就会创建一个新的。这一切都发生在幕后。

java arraylist的c 等效于std :: vector。您使用大写的术语"动态数组",就好像它具有特定的含义,而不是应用于概念"数组"的通用形容词"动态"。C 规格Lingo中的"动态数组"是一个局部变量,具有固定大小的固定大小,在初始化/创建时设置了设置,但是每次输入范围(并重新创建阵列)时,它可能会获得不同的大小。由于它是本地范围的,因此对于存储暂时以外的文件读取的内容并不太用。C 还具有堆积的分配数组,它们在创建时具有其大小集(如动态数组),但一直持续直至明确删除,这可能更有用。这些在一般形容词中是"动态的",但在规格意义上不是"动态数组"。