代码之家  ›  专栏  ›  技术社区  ›  Charles Eli Cheese

使用模板使不同长度的项目留在堆栈上?

  •  2
  • Charles Eli Cheese  · 技术社区  · 14 年前

    情况是,我有一个项目数组,项目内部有一个数组。但是,我希望在声明时使数组在可变长度内,但在编译时可以调整大小。

    class2<16>[] = new class2<16>[2048*1024];
    

    或者别的什么。希望你能明白。

    显然,使其内部具有固定数组很容易,但问题是数组可能很大,因此我不希望有2048*1024个new调用,因此我绝对不希望class2调用任何new或delete方法。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Abhay    14 年前

    可以为内部数组大小创建模板参数。例如:-

    template<int siz>
    class Item{
      int arr[siz];
    };
    
    int main() {
      Item<15> items[10];
      return 0;
    }
    
        2
  •  3
  •   visitor    14 年前

    std::tr1::array (添加到C++0x中的标准库)和 boost::array 已存在,采用两个模板参数:项目类型和数量:

    std::tr1::array<int, 16> something;
    

    您可以同时拥有任意数量的阵列 -使用std::vector容器的时间:

    std::vector<std::tr1::array<int, 16> > lots_of_arrays(2048*1024);