Boost logo

Boost Users :

Subject: [Boost-users] Does boost have something like this, or does it need one?
From: Roberto Gimenez (chilabot_at_[hidden])
Date: 2009-03-05 19:39:08


I need something like this:

template <typename Type>
struct Array
{
        private:
                Type *data;
                int size;

        public:
                explicit Array(Type *data, int size) : data(data), size(size)
                {
                        assert(size > 0);
                }

                Type &operator[](int index) const { return data[index]; }

                Type &at(int index) const
                {
                        assert(index > 0 && index < size);
                        return data[index];
                }

                Type *getData() const { return data; }

                Type *begin() const { return data; }
                Type *end() const { return data + size; }

                int getSize() const { return size; }
};

But I think boost doesn't have it. boost::array also takes an std::size_t
template parameter but that doesn't work for what I want to do because
I want to be able to pass a function something like this:

void myFunction(const Array<int> &a) { ... }

void main()
{

        int myVec1[6] = { 1,2,3,4,5,6 };
        int myVec2[2] = { 7,8 };

        myFunction(Array<int>(myVec1, 6));
        myFunction(Array<int>(myVec2, 2));

}

I can't do this with boost::array and std::vector allocates and I don't want
that too. Any help?


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net