我想知道你能不能帮我。
我有一个循环,我读一些数字。
我想初始化一个malloc,将这些数字中的每一个添加到一个数组中,但我们不知道malloc的大小。
你能帮我吗?
我想这样做。我知道如何用java实现,但我想用c实现:
int[] mark = {1, 2, 3, 4}; //how to do if we don't know the size of mark?
ArrayList<Integer> arr = new ArrayList;
for loop{
arr.add(mark[i]); //so, for each loop the malloc adds mark[i]. We don't care about the size of the malloc
}
谢谢!
1条答案
按热度按时间ldioqlga1#
java(7)arraylist实现:https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/util/arraylist.java
如果您查看add方法,您会注意到对该方法的每次调用都会检查数组的容量(如果已满)。
如果它是满的,它必须增长(通常是实际大小的50%),第207行,它使用value>>1,这与value/2相同。
在那之后,它只是把元素放在数组中。
这段代码可能对您有所帮助。
另外,我也是一名java程序员。:)