• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How to encode STL vector
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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.

References: 
 >Re: How to encode STL vector (From: Andrew Demkin <email@hidden>)

  • Prev by Date: Re: To all cocoa developers - new cocoa dev forum
  • Next by Date: Re: Problem with dynamic reconfiguration of a TableView?
  • Previous by thread: Re: How to encode STL vector
  • Next by thread: Root privileges again
  • Index(es):
    • Date
    • Thread