Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. QOTD

QOTD

Scheduled Pinned Locked Moved The Lounge
c++jsonquestionlearning
42 Posts 17 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Ryan Johnston 0

    Chris Losinger wrote: but, i've honestly never seen that in any live code or example: it's always (*it).Foo(); Are you serious? I have never ever seen someone use (*it).Foo() instead of it->Foo(). Pointers would be so dirty without ->. Ryan Johnston

    C Offline
    C Offline
    Chris Losinger
    wrote on last edited by
    #11

    Ryan Johnston wrote: Are you serious? yes, 100%. -c


    Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

    image effects!

    R D 2 Replies Last reply
    0
    • C Chris Losinger

      Ryan Johnston wrote: Are you serious? yes, 100%. -c


      Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

      image effects!

      R Offline
      R Offline
      Ryan Johnston 0
      wrote on last edited by
      #12

      Wow, interesting... I guess the only difference is one keystroke, but I am just surprised. What kind of programming do you do? Ryan Johnston

      C 1 Reply Last reply
      0
      • R Ryan Johnston 0

        Wow, interesting... I guess the only difference is one keystroke, but I am just surprised. What kind of programming do you do? Ryan Johnston

        C Offline
        C Offline
        Chris Losinger
        wrote on last edited by
        #13

        there's probably some deep metaphysical reason why people want to use (*it). instead of it-> . i just do it because that's how i learned it. Ryan Johnston wrote: What kind of programming do you do? a little of everything, but mostly 2d graphics. -c


        Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

        image effects!

        C D 2 Replies Last reply
        0
        • D David Stone

          Congrats to Christian Graus for thinking up the QOTD. I believe this is the first one I've seen from a CPian. Of course, I can't answer because I haven't a clue when it comes to STL. So I'll just leave the answering of it to the rest of you. :) David Stone It seemed similar to someone saying, "Would you like to meet my knife collection?" Ryan Johnston on Elaine's sig

          N Offline
          N Offline
          Nemanja Trifunovic
          wrote on last edited by
          #14

          The answer is C) (*it) is the value, so &(*it) is the address of the value. Or did I miss something? I vote pro drink :beer:

          S C P C 4 Replies Last reply
          0
          • C Chris Losinger

            Ryan Johnston wrote: Are you serious? yes, 100%. -c


            Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

            image effects!

            D Offline
            D Offline
            David Wulff
            wrote on last edited by
            #15

            :omg:


            David Wulff http://www.davidwulff.co.uk

            One 18yrs male, red and white, good condition; daily servicing required. £500 collect ono.

            C 1 Reply Last reply
            0
            • N Nemanja Trifunovic

              The answer is C) (*it) is the value, so &(*it) is the address of the value. Or did I miss something? I vote pro drink :beer:

              S Offline
              S Offline
              Shog9 0
              wrote on last edited by
              #16

              Nemanja Trifunovic wrote: Or did I miss something? No, you are correct. Any other way is less safe.

              ---

              Shog9 If I could sleep forever, I could forget about everything...

              1 Reply Last reply
              0
              • C Chris Losinger

                there's probably some deep metaphysical reason why people want to use (*it). instead of it-> . i just do it because that's how i learned it. Ryan Johnston wrote: What kind of programming do you do? a little of everything, but mostly 2d graphics. -c


                Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                image effects!

                C Offline
                C Offline
                Colin Leitner
                wrote on last edited by
                #17

                Looking into the MSDN can open eyes! iterator overloads operator*. plain and simple. Somehow the STL trys to use references wherever possible.

                C 1 Reply Last reply
                0
                • D David Wulff

                  :omg:


                  David Wulff http://www.davidwulff.co.uk

                  One 18yrs male, red and white, good condition; daily servicing required. £500 collect ono.

                  C Offline
                  C Offline
                  Chris Losinger
                  wrote on last edited by
                  #18

                  sadly, that used up the last of my "serious" for today. time for beer. -c


                  Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                  image effects!

                  D 1 Reply Last reply
                  0
                  • C Chris Losinger

                    sadly, that used up the last of my "serious" for today. time for beer. -c


                    Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                    image effects!

                    D Offline
                    D Offline
                    David Wulff
                    wrote on last edited by
                    #19

                    lol. :)


                    David Wulff http://www.davidwulff.co.uk

                    One 18yrs male, red and white, good condition; daily servicing required. £500 collect ono.

                    1 Reply Last reply
                    0
                    • N Nemanja Trifunovic

                      The answer is C) (*it) is the value, so &(*it) is the address of the value. Or did I miss something? I vote pro drink :beer:

                      C Offline
                      C Offline
                      Colin Leitner
                      wrote on last edited by
                      #20

                      Correct :D! Altough I believe the questioner ment D).

                      1 Reply Last reply
                      0
                      • C Colin Leitner

                        Looking into the MSDN can open eyes! iterator overloads operator*. plain and simple. Somehow the STL trys to use references wherever possible.

                        C Offline
                        C Offline
                        Chris Losinger
                        wrote on last edited by
                        #21

                        Colin Leitner wrote: plain and simple what's plain and simple? *it.menuItem // does not compile (*it).menuItem // compiles nicely -c


                        Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                        image effects!

                        C 1 Reply Last reply
                        0
                        • C Chris Losinger

                          Colin Leitner wrote: plain and simple what's plain and simple? *it.menuItem // does not compile (*it).menuItem // compiles nicely -c


                          Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                          image effects!

                          C Offline
                          C Offline
                          Colin Leitner
                          wrote on last edited by
                          #22

                          iterator is a struct. now operator* returns the value (if I understood that right). so you need it.operator*().menuItem or (*it).menuItem. This has nothing to do with any pointer syntax.

                          C 1 Reply Last reply
                          0
                          • C Colin Leitner

                            iterator is a struct. now operator* returns the value (if I understood that right). so you need it.operator*().menuItem or (*it).menuItem. This has nothing to do with any pointer syntax.

                            C Offline
                            C Offline
                            Chris Losinger
                            wrote on last edited by
                            #23

                            but it has a lot to do with precedence. overloading an operator, such as "*" doesn't change its precedence. -c


                            Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                            image effects!

                            C 1 Reply Last reply
                            0
                            • C Chris Losinger

                              but it has a lot to do with precedence. overloading an operator, such as "*" doesn't change its precedence. -c


                              Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                              image effects!

                              C Offline
                              C Offline
                              Colin Leitner
                              wrote on last edited by
                              #24

                              Yes but '->' won't work at all! You cannot change operator precedence at all, that's correct. a+++++b ;)

                              C 1 Reply Last reply
                              0
                              • N Nemanja Trifunovic

                                The answer is C) (*it) is the value, so &(*it) is the address of the value. Or did I miss something? I vote pro drink :beer:

                                P Offline
                                P Offline
                                peterchen
                                wrote on last edited by
                                #25

                                What's wrong with 'it' alone - (as long as the context indicates a valuetype * is expected)


                                You don't need to sleep to see a nightmare  Anne Clark   [sighist]

                                M 1 Reply Last reply
                                0
                                • C Colin Leitner

                                  Yes but '->' won't work at all! You cannot change operator precedence at all, that's correct. a+++++b ;)

                                  C Offline
                                  C Offline
                                  Chris Losinger
                                  wrote on last edited by
                                  #26

                                  are you 100% sure of that?

                                  #include <vector>

                                  struct sc
                                  {
                                  sc(int i) {v=i;}
                                  sc() {v=0;}

                                  int v;
                                  };
                                  int main(int argc, char* argv[])
                                  {

                                  std::vector <sc> myvec;
                                  myvec.push_back(sc(10));
                                  myvec.push_back(sc(40));
                                  myvec.push_back(sc(60));
                                  myvec.push_back(sc(15));
                                  myvec.push_back(sc(13));
                                  myvec.push_back(sc(11));

                                  for (std::vector<sc>::iterator it = myvec.begin(); it!=myvec.end(); it++)
                                  {
                                  if ((*it).v != it->v)
                                  {
                                  printf("%d != %d\n", (*it).v, it->v);
                                  }
                                  }
                                  return 0;
                                  }

                                  cause this works fine. -c


                                  Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                                  image effects!

                                  C 1 Reply Last reply
                                  0
                                  • P peterchen

                                    What's wrong with 'it' alone - (as long as the context indicates a valuetype * is expected)


                                    You don't need to sleep to see a nightmare  Anne Clark   [sighist]

                                    M Offline
                                    M Offline
                                    Michael Dunn
                                    wrote on last edited by
                                    #27

                                    peterchen wrote: What's wrong with 'it' a You mean, aside from being incorrect code? ;) An iterator is an opaque data type, like say POSITION in MFC. You can't make any assumptions about it actually being a pointer to the underlying data, because iterator is not documented as such. --Mike-- Just released - RightClick-Encrypt v1.3 - Adds fast & easy file encryption to Explorer My really out-of-date homepage Sonork-100.19012 Acid_Helm

                                    D 1 Reply Last reply
                                    0
                                    • R Ryan Johnston 0

                                      I don't know anything about STL, what is an STL iterator? Having said that the only option that look reasonable is D (although other options are possible if iterators have overloaded operators). Ryan Johnston

                                      M Offline
                                      M Offline
                                      Michael Dunn
                                      wrote on last edited by
                                      #28

                                      It's a type used to iterate (!) through the elements in an STL collection (vector, list, etc.) --Mike-- Just released - RightClick-Encrypt v1.3 - Adds fast & easy file encryption to Explorer My really out-of-date homepage Sonork-100.19012 Acid_Helm

                                      1 Reply Last reply
                                      0
                                      • C Chris Losinger

                                        are you 100% sure of that?

                                        #include <vector>

                                        struct sc
                                        {
                                        sc(int i) {v=i;}
                                        sc() {v=0;}

                                        int v;
                                        };
                                        int main(int argc, char* argv[])
                                        {

                                        std::vector <sc> myvec;
                                        myvec.push_back(sc(10));
                                        myvec.push_back(sc(40));
                                        myvec.push_back(sc(60));
                                        myvec.push_back(sc(15));
                                        myvec.push_back(sc(13));
                                        myvec.push_back(sc(11));

                                        for (std::vector<sc>::iterator it = myvec.begin(); it!=myvec.end(); it++)
                                        {
                                        if ((*it).v != it->v)
                                        {
                                        printf("%d != %d\n", (*it).v, it->v);
                                        }
                                        }
                                        return 0;
                                        }

                                        cause this works fine. -c


                                        Conservative: One who admires radicals centuries after they're dead. -- Leo C. Rosten

                                        image effects!

                                        C Offline
                                        C Offline
                                        Colin Leitner
                                        wrote on last edited by
                                        #29

                                        I'm sorry, I forgot they implemented the operator-> too (argh! operator overloading begins to suck ;)

                                        C 1 Reply Last reply
                                        0
                                        • C Colin Leitner

                                          I'm sorry, I forgot they implemented the operator-> too (argh! operator overloading begins to suck ;)

                                          C Offline
                                          C Offline
                                          Colin Leitner
                                          wrote on last edited by
                                          #30

                                          Clickety.I choose a random iterator type, but they all behave the same.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups