|
Boost : |
From: Shunsuke Sogame (mb2act_at_[hidden])
Date: 2006-07-20 06:30:45
Steven Burns wrote:
> Recently I came up with a modified version of boost::array that supports
> runtime sized arrays.
>
> The current boost::array implementation is great but every now and then
> you'll need runtime-sized arrays: it's simply impossible to know everything
> at
> compile time.
>
> It is backwards compatible:
>
> boost::array<int, 10> sarray;
>
> but it can be used this way now:
>
> boost::array<int> darray(10);
>
> I realize you could simply use std::vector, but sometimes all you want is a
> fixed-size array (but sized at runtime). Besides, I am not sure about the
> overhead involved with std::vector for these simple scenarios.
>
> Comments welcome,
Boost.Array looks deprecated by Boost.Range, IMHO.
(Broken compilers still need it, though.)
I'm not sure whether or not 'std::vector' made dynamic array deprecated.
Well, how's that? :-)
template< class Value >
struct array_range :
private boost::base_from_member< boost::scoped_array<Value> >,
boost::iterator_range<Value *>,
private boost::noncopyable
{
private:
typedef boost::base_from_member< boost::scoped_array<Value> >
scoped_array_bt;
typedef boost::iterator_range<Value *> super_t;
public:
explicit array_range(std::size_t sz) :
scoped_array_bt(new Value[sz]),
super_t(scoped_array_bt::member.get(),
scoped_array_bt::member.get() + sz)
{ }
};
-- Shunsuke Sogame
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk