Re: How to encode STL vector
Re: How to encode STL vector
- Subject: Re: How to encode STL vector
- From: Dan Crevier <email@hidden>
- Date: Thu, 07 Nov 2002 14:04:22 -0800
On 11/7/02 2:58 AM, "Andrew Demkin" <email@hidden> wrote:
>
At 11:02 PM 11/6/02, Dan Crevier wrote: On 11/6/02 7:38 PM, "James
>
Montgomerie" <email@hidden> wrote:
>
>
>> Note, however, that though in all the implementations I know of,
>
>> &myVector.front() does return an pointer to the Vector's internal array, I
>
>> don't believe it's guaranteed to by the standard. I think that a Vector can
>
>> use any O(1) storage, and if it did (or changed to in the future) use
>
>> something other than a plain array, your code would break (because, for
>
>> example, the second item is not guaranteed to be adjacent in memory to the
>
>> first).
>
>>
>
> Actually, the standard does guarantee that it's contiguous in memory, but you
>
> aren't guaranteed that the iterator is a simple pointer. For example,
>
> Metrowerk's vector implementation does not use a simple pointer in the latest
>
> version. That's you need to use &myVector[0]. See Scott Myer's More Effective
>
> STL for more info. It's a great book.
>
>
>
<pedantically>
>
>
The original standard did not make the guarantee of contiguous memory, but it
>
has been ammended for the next version to make this guarantee and no common
>
implementations are known to be in conflict.
>
>
It's also true that the preferred syntax is &myVector[0], but this has nothing
>
to do with iterators potentially being non-pointer types. Just as operator[]
>
returns a reference, so does front(). Iterators do not enter the picture in
>
either case. The real motivation for using operator[] is that there's greater
>
likelihood of a compiler error for sequence types such as 'list' which do not
>
make the contiguous memory guarantee.
>
>
</pedantically>
You're right. I was reading myVector.begin() for some reason. A lot of
people have used &myVector.begin(), which will work if your STL
implementation uses raw pointers for vector iterators.
Dan
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.