how to initialize an stl iterator in vc2005

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • thinktwice

    #1

    how to initialize an stl iterator in vc2005

    std::vector<CSt ringvec;
    vec::iterator iter;

    i can initiaze the iterator in vc6 like this $B!'(B iter = NULL, but it
    compile failed in vc2005, it tells me there is no acceptable
    conversion.


  • Stefan Naewe

    #2
    Re: how to initialize an stl iterator in vc2005

    On 7/1/2008 2:41 PM, thinktwice wrote:
    std::vector<CSt ringvec;
    vec::iterator iter;
    >
    i can initiaze the iterator in vc6 like this : iter = NULL, but it
    compile failed in vc2005, it tells me there is no acceptable
    conversion.
    How true...
    Repeat after me: "An iterator is not a pointer".

    Try this:


    std::vector<CSt ringvec;
    std::vector<CSt ring>::iterator iter = vec.end();



    What problem do you try to solve?


    Regards,
    Stefan
    --
    Stefan Naewe stefan dot naewe at atlas-elektronik dot com
    Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
    Plain text mails only, please http://www.expita.com/nomime.html

    Comment

    • thinktwice

      #3
      Re: how to initialize an stl iterator in vc2005

      thanks for your reply, i want to use a class data member whhose type
      is a iteraotr, i might use in several class methods, but before use it
      i want to know whether this iterator is null or invalid

      On 7ÔÂ1ÈÕ, ÏÂÎç9ʱ00·Ö, Stefan Naewe <nos...@please. .netwrote:
      On 7/1/2008 2:41 PM, thinktwice wrote:
      >
      std::vector<CSt ringvec;
      vec::iterator iter;
      >
      i can initiaze the iterator in vc6 like this £º iter = NULL, but it
      compile failed in vc2005, it tells me there is no acceptable
      conversion.
      >
      How true...
      Repeat after me: "An iterator is not a pointer".
      >
      Try this:
      >
      std::vector<CSt ringvec;
      std::vector<CSt ring>::iterator iter = vec.end();
      >
      What problem do you try to solve?
      >
      Regards,
      Stefan
      --
      Stefan Naewe stefan dot naewe at atlas-elektronik dot com
      Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
      Plain text mails only, please http://www.expita.com/nomime.html

      Comment

      • Kai-Uwe Bux

        #4
        Re: how to initialize an stl iterator in vc2005

        thinktwice wrote:
        thanks for your reply, i want to use a class data member whhose type
        is a iteraotr, i might use in several class methods, but before use it
        i want to know whether this iterator is null or invalid
        (a) Please don't top-post.

        (b) Generally, it is impossible to determine through inspection whether an
        iterator is invalid. The point is that operations on the underlying
        container can invalidate iterators. The iterator is not required to detect
        that.

        (c) With a lot of care, you could use the container.end() value to indicate
        an invalid iterator. However, this is fragile because of the problems
        mentioned in (b).

        (d) It might be better to consider a redesign that avoids the need for
        checking the validity of the iterator. What is the underlying problem you
        are trying to solve?


        Best

        Kai-Uwe Bux
        On 7?1?, ??9?00?, Stefan Naewe <nos...@please. netwrote:
        >On 7/1/2008 2:41 PM, thinktwice wrote:
        >>
        std::vector<CSt ringvec;
        vec::iterator iter;
        >>
        i can initiaze the iterator in vc6 like this ? iter = NULL, but it
        compile failed in vc2005, it tells me there is no acceptable
        conversion.
        >>
        >How true...
        >Repeat after me: "An iterator is not a pointer".
        >>
        >Try this:
        >>
        >std::vector<CS tringvec;
        >std::vector<CS tring>::iterato r iter = vec.end();
        >>
        >What problem do you try to solve?
        >>
        >Regards,
        > Stefan
        >--
        >Stefan Naewe stefan dot naewe at atlas-elektronik dot com
        >Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
        >Plain text mails only, please http://www.expita.com/nomime.html
        PS: also please don't quote signatures.

        Comment

        • James Kanze

          #5
          Re: how to initialize an stl iterator in vc2005

          On Jul 1, 2:41 pm, thinktwice <memorial...@gm ail.comwrote:
          std::vector<CSt ringvec;
          vec::iterator iter;
          i can initiaze the iterator in vc6 like this ? iter = NULL, but it
          compile failed in vc2005, it tells me there is no acceptable
          conversion.
          It's undefined behavior. VC 6.0 failed to tell you about the
          error; later versions do.

          --
          James Kanze (GABI Software) email:james.kan ze@gmail.com
          Conseils en informatique orientée objet/
          Beratung in objektorientier ter Datenverarbeitu ng
          9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

          Comment

          Working...