• 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: Andrew Demkin <email@hidden>
  • Date: Thu, 7 Nov 2002 02:58:23 -0800

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>

HTH,
Andrew.
_______________________________________________
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.

  • Follow-Ups:
    • Re: How to encode STL vector
      • From: Dan Crevier <email@hidden>
  • Prev by Date: Re: Focus ring around NSTextField
  • Next by Date: Root privileges again
  • Previous by thread: Re: Focus ring around NSTextField
  • Next by thread: Re: How to encode STL vector
  • Index(es):
    • Date
    • Thread