首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java等价于C++ std::vector?

Java等价于C++ std::vector?
EN

Stack Overflow用户
提问于 2018-01-11 19:00:41
回答 1查看 1.4K关注 0票数 -4

直到今天,我还以为Java中的ArrayLists和C++中的std::vectors是一样的,但事实证明ArrayLists只能存储对象。(基元是包装的)。我要找的东西是这样的:

代码语言:javascript
复制
class Array {

    int i;
    type[] array;

    Array() {
        this.i = 0;
        this.array = new array[1];
    }

    Array(int initialSize) {
         this.i = 0;
         this.array = new array[initialSize];
    }

    type get(int index) {
        return array[index];
    }

    void add(type to_add) {
        if(array.length == i) {
            type[] newArray = new type[array.length * 2];
            for(int j = 0; j < array.length; j++) newArray[j] = array[j]; 
        }
        array[i++] = to_add; 
    }

}

"type“是原始数据类型之一。

注意:我不需要存储对象的能力,所以我不想要ArrayList的内存开销。

如果我的假设是错误的,请让我知道:-D

编辑:这不是副本,这是一个关于性能的问题,而不是关于它是否可能的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-11 19:06:20

标准(Java )库不提供与使用Java类型的C++ std::vector clss等效的库。可供选择的有:

  • 使用像ArrayList这样的标准类,并使用(比如说) Integer作为类型参数。
  • 使用第三方库。例如,旧的GNU Trove库。(注:这不是建议。这是一个例子。)

Trove和类似的东西不是也不能使用Java泛型实现。这是因为Java只允许引用类型用作泛型类的参数。因此,这些Java库实际上被实现为具有集合API的“复制粘贴”代码,这些API在很大程度上不是多态的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48205499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档