Boost logo

Boost Users :

From: Jeffrey Jiang (gamedboy_at_[hidden])
Date: 2007-08-31 23:08:15


Thanks for the reply. I agree that this way is prob clearer and predictable.
However in this case I am implementing a fix size grid of pointers, to
represent a geographical map, and the location of the pointer to determine
the position of the character.

So although using vector in this case would work, it will convey a wrong
message to the users that
-they can resize the grid
-the location of the pointer is not impt

I would rather use a shared_ptr<Character> **characterGrid instead, which
bring us back to the problem below.

Jeffrey.

"James Emerton" <ephelon_at_[hidden]> wrote in message
news:c9424d940708310855t3d5acd1boef1c2686bfabfca5_at_mail.gmail.com...
> Do you really need to have a shared_array containing shared_ptrs?
>
> You would probably be better off with something like:
>
> std::vector< std::vector< boost::shared_ptr<Character> > > characterGrid;
> characterGrid.resize( _info.l );
> for( int i = 0; i < _info.l; ++i )
> characterGrid.resize( _info.w );
>
> James
>
>
>
> On 8/30/07, Jeffrey Jiang <gamedboy_at_[hidden]> wrote:
>
>> This is a sparse array, most of the pointers will be set to 0. As I could
>> not find much information about shared_array on line, I would like to
>> check
>> is there any issue with this implementation.
>>
>> boost::shared_array<boost::shared_array<boost::shared_ptr<Character>>>
>> characterGrid(new
>> boost::shared_array<boost::shared_ptr<Character>>[_info._l ]);
>>
>> for( int i=0;i< _info._l; i++) {
>>
>> characterGrid[i] =
>> boost::shared_array<boost::shared_ptr<Character>>(new
>> boost::shared_ptr<Character>[_info._w]);
>>
>> for( int j=0; j< _info._w; j++) {
>>
>> //is it alright for me to use an empty shared_ptr in this context
>> to
>> init the array?
>>
>> characterGrid[i][j] = boost::shared_ptr<Character>();
>>
>> }
>>
>> }
>>


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