C++ 是否有具有固定缓冲区项和动态项计数的标准数组?

C++ 是否有具有固定缓冲区项和动态项计数的标准数组?,c++,arrays,stl,containers,std,C++,Arrays,Stl,Containers,Std,我正在寻找一个C++98而不是C++11中的标准容器 哪个将具有此规范: -固定缓冲区大小,如简单数组 -使用类计数访问器向量 以下是我想要的: template <class TYPE, size_t ARRAY_SIZE> class Array { /*-------------------------------- MEMBERS ---------------------------------*/ private: TYPE _

我正在寻找一个C++98而不是C++11中的标准容器 哪个将具有此规范: -固定缓冲区大小,如简单数组 -使用类计数访问器向量

以下是我想要的:

template <class TYPE, size_t ARRAY_SIZE>
  class Array
  {
    /*-------------------------------- MEMBERS ---------------------------------*/
    private:
      TYPE     _array[ARRAY_SIZE];
      size_t   _count;
    /*--------------------- CONSTRUCTORS/DESTRUCTORS ---------------------------*/
    public:
      Array():_count(0){}

    /*------------------------------- METHODS ----------------------------------*/

    public:
      inline const TYPE * data() const {return _array;}
      inline void clear() {_count= 0; }
      inline void push_back(const TYPE& i_type) {_array[_count] = i_type; _count++;}
      inline size_t count() const {return _count;}
      inline size_t max_size() const {return ARRAY_SIZE;}
      inline bool empty() const {return (_count== 0);}
      const TYPE& operator[](size_t i_index){return _array[i_index];}
  };

不,没有。操纵分配器为vector这样做也不是真正可行的。您可以自己编写,也可以在某个第三方库中找到

Boost.Container可能很适合。

在push_backconst TYPE&i_TYPE{u array[\u count]=i_TYPE;\u count++}和操作符[]中,您应该检查是否正在跨越边界,然后忽略或抛出适当的异常,比如ArrayIndexOutOfBounds之类的异常


使用STD::向量,为什么要重新生成同一个轮子?

< P>这可能被一些人认为是与好C++相矛盾的,但是考虑到约束和假设的要求,包括在编译时需要知道大小,我会考虑使用一个简单的C样式数组。p> <>正如在C++中有一个地方被认为是邪恶的宏和其他结构一样,C数组也是有地方的。邪恶的不是工具,而是它的使用方式


如果您不需要在编译时了解siae,那么我会倾向于使用向量,预先正确地调整它的大小,并且永远不增长它。

为什么您需要固定大小,而不是简单地以给定的大小创建它并且永远不增长它?您需要知道编译时的大小吗?如果是,为什么?如果vector不可接受,为什么不?所有C++98提供的都是C风格的数组,它们是固定的缓冲区大小,并且具有sizeofarray/sizeofT形式的大小函数。对于固定大小的数组,C++11有一个合适的类,并且可能没有理由不能只复制头和一些小的修正,因此它是独立的。1它适用于嵌入式软件,所以我更喜欢在启动时初始化所有内存,这样我就可以确保有足够的内存用于所有场景。2这种容器允许我将其放入一个类中,作为消息发送给另一个进程,如果另一个进程具有相同消息的类定义,我可以将缓冲区强制转换到该类型的类中并处理该消息。@rastafaryd我编辑了我的答案,以提供到一个实现的链接。