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. General Programming
  3. C / C++ / MFC
  4. using CMap

using CMap

Scheduled Pinned Locked Moved C / C++ / MFC
questiondata-structuresworkspace
14 Posts 6 Posters 2 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.
  • L Offline
    L Offline
    laiju
    wrote on last edited by
    #1

    I have declared the following in my application. CMap m_map; I have a windows explorer like setup. When i click a node in the tree i need to display an MDI Window. So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window. Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items. So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*). laiju

    L 1 Reply Last reply
    0
    • L laiju

      I have declared the following in my application. CMap m_map; I have a windows explorer like setup. When i click a node in the tree i need to display an MDI Window. So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window. Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items. So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*). laiju

      L Offline
      L Offline
      laiju
      wrote on last edited by
      #2

      I have declared the following in my application. "CMap < CString,LPCSTR,CWnd*,CWnd* > m_map" I have a windows explorer like setup. When i click a node in the tree i need to display an MDI Window. So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window. Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items. So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*). . laiju

      C R M 3 Replies Last reply
      0
      • L laiju

        I have declared the following in my application. "CMap < CString,LPCSTR,CWnd*,CWnd* > m_map" I have a windows explorer like setup. When i click a node in the tree i need to display an MDI Window. So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window. Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items. So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*). . laiju

        C Offline
        C Offline
        Christian Graus
        wrote on last edited by
        #3

        Is there any reason you're using CMap instead of map, in the C++ standard library ? CMap, CList, CArray,etc. were all written only as a stopgap until the stl came online. They are really crappy in comparison. You need to build a second map that goes the other way. Even if you iterate through the keys collection, checking for the value ( which is a very lousy thing to have to do ), there's no guarentee that your value appears only once, so there's no guarentee you'll find the right key. Christian Graus - Microsoft MVP - C++

        1 Reply Last reply
        0
        • L laiju

          I have declared the following in my application. "CMap < CString,LPCSTR,CWnd*,CWnd* > m_map" I have a windows explorer like setup. When i click a node in the tree i need to display an MDI Window. So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window. Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items. So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*). . laiju

          R Offline
          R Offline
          Ravi Bhavnani
          wrote on last edited by
          #4

          You'll need to iterate through all keys and check if each key's value matches the CWnd* you're searching for. /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

          C 1 Reply Last reply
          0
          • R Ravi Bhavnani

            You'll need to iterate through all keys and check if each key's value matches the CWnd* you're searching for. /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

            C Offline
            C Offline
            Christian Graus
            wrote on last edited by
            #5

            But that only works if each CWnd is only in there once. And it's damn ugly. Christian Graus - Microsoft MVP - C++

            R 1 Reply Last reply
            0
            • C Christian Graus

              But that only works if each CWnd is only in there once. And it's damn ugly. Christian Graus - Microsoft MVP - C++

              R Offline
              R Offline
              Ravi Bhavnani
              wrote on last edited by
              #6

              True. What he really needs is a multimap. /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

              C 1 Reply Last reply
              0
              • R Ravi Bhavnani

                True. What he really needs is a multimap. /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

                C Offline
                C Offline
                Christian Graus
                wrote on last edited by
                #7

                Does multimap let you search the values ? Christian Graus - Microsoft MVP - C++

                R 1 Reply Last reply
                0
                • C Christian Graus

                  Does multimap let you search the values ? Christian Graus - Microsoft MVP - C++

                  R Offline
                  R Offline
                  Ravi Bhavnani
                  wrote on last edited by
                  #8

                  Sorry, I meant a bi-directional map, not a multi-map. :-O /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

                  P 1 Reply Last reply
                  0
                  • R Ravi Bhavnani

                    Sorry, I meant a bi-directional map, not a multi-map. :-O /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

                    P Offline
                    P Offline
                    PJ Arends
                    wrote on last edited by
                    #9

                    I have used map and multimap, and read about but never used hash_map and hash_multimap. What exactly do you mean by a bi-directional map? I always thought bi-directional containers were containers that had both forward and reverse iterators, but that definition does not seem to be what is being discussed here. What I think you mean is a map where both the key and value are unique, and has a find() member that can find either the key or the value. Is there such a beast? If so what is it called and where can I get it? Currently I am just using a map for this functionality, I check to make sure the value is unique before I add a new value to the map, and I sequentially iterate the map, comparing values, until I find the keyvalue I am looking for. If there is a better implementation out there I would be interested in learning about it.


                    "You're obviously a superstar." - Christian Graus about me - 12 Feb '03 "Obviously ???  You're definitely a superstar!!!" - mYkel - 21 Jun '04 "There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05 Within you lies the power for good - Use it!

                    R 1 Reply Last reply
                    0
                    • L laiju

                      I have declared the following in my application. "CMap < CString,LPCSTR,CWnd*,CWnd* > m_map" I have a windows explorer like setup. When i click a node in the tree i need to display an MDI Window. So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window. Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items. So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*). . laiju

                      M Offline
                      M Offline
                      Maximilien
                      wrote on last edited by
                      #10

                      a tought ... if the strings are unique, make a map that points to ( a pointer to ) a structure containing a CWnd and a HTREEITEM when you create the CWnd, attach the structure to the CWnd ( as a member of the class ) when you create the Tree Item, attach the structure to the Item ( CTreeCtrl::SetItemData ) when you click on the window, you can find exactly which item to highlight; and when you click on the tree item you have the pointer to the CWnd.


                      Maximilien Lincourt Your Head A Splode - Strong Bad

                      1 Reply Last reply
                      0
                      • P PJ Arends

                        I have used map and multimap, and read about but never used hash_map and hash_multimap. What exactly do you mean by a bi-directional map? I always thought bi-directional containers were containers that had both forward and reverse iterators, but that definition does not seem to be what is being discussed here. What I think you mean is a map where both the key and value are unique, and has a find() member that can find either the key or the value. Is there such a beast? If so what is it called and where can I get it? Currently I am just using a map for this functionality, I check to make sure the value is unique before I add a new value to the map, and I sequentially iterate the map, comparing values, until I find the keyvalue I am looking for. If there is a better implementation out there I would be interested in learning about it.


                        "You're obviously a superstar." - Christian Graus about me - 12 Feb '03 "Obviously ???  You're definitely a superstar!!!" - mYkel - 21 Jun '04 "There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05 Within you lies the power for good - Use it!

                        R Offline
                        R Offline
                        Ravi Bhavnani
                        wrote on last edited by
                        #11

                        PJ Arends wrote: What I think you mean is a map where both the key and value are unique, and has a find() member that can find either the key or the value. Yes, exactly. PJ Arends wrote: If so what is it called and where can I get it? I don't know. I'm tempted to write one, but I doubt I'll come up with anything revolutionary (i.e. very efficient). A hashmap of pairs, with uniqueness enforced on values is what comes to mind. /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

                        P 1 Reply Last reply
                        0
                        • R Ravi Bhavnani

                          PJ Arends wrote: What I think you mean is a map where both the key and value are unique, and has a find() member that can find either the key or the value. Yes, exactly. PJ Arends wrote: If so what is it called and where can I get it? I don't know. I'm tempted to write one, but I doubt I'll come up with anything revolutionary (i.e. very efficient). A hashmap of pairs, with uniqueness enforced on values is what comes to mind. /ravi My new year's resolution: 2048 x 1536 Home | Articles | Freeware | Music ravib@ravib.com

                          P Offline
                          P Offline
                          PJ Arends
                          wrote on last edited by
                          #12

                          Thanks Ravi. I thought you were refering to an already existing implementation that I did not know about. I guess I have to stick to my home-brewed hack.


                          "You're obviously a superstar." - Christian Graus about me - 12 Feb '03 "Obviously ???  You're definitely a superstar!!!" - mYkel - 21 Jun '04 "There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05 Within you lies the power for good - Use it!

                          J 1 Reply Last reply
                          0
                          • P PJ Arends

                            Thanks Ravi. I thought you were refering to an already existing implementation that I did not know about. I guess I have to stick to my home-brewed hack.


                            "You're obviously a superstar." - Christian Graus about me - 12 Feb '03 "Obviously ???  You're definitely a superstar!!!" - mYkel - 21 Jun '04 "There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05 Within you lies the power for good - Use it!

                            J Offline
                            J Offline
                            Joaquin M Lopez Munoz
                            wrote on last edited by
                            #13

                            An off-the-sheld bidirectional map is provided here[^]; unfortunately, it doesn't work with MSVC 7.1. For a more comprehensive solution, allow me to suggest you take a look at the Boost Multi-index Containers Library[^], which enables the construction of bidirectional maps and more. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo Want a Boost forum in Code Project? Vote here[^]!

                            P 1 Reply Last reply
                            0
                            • J Joaquin M Lopez Munoz

                              An off-the-sheld bidirectional map is provided here[^]; unfortunately, it doesn't work with MSVC 7.1. For a more comprehensive solution, allow me to suggest you take a look at the Boost Multi-index Containers Library[^], which enables the construction of bidirectional maps and more. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo Want a Boost forum in Code Project? Vote here[^]!

                              P Offline
                              P Offline
                              PJ Arends
                              wrote on last edited by
                              #14

                              Thanks Joaquín, your CP article looks interesting. I will DL the code and play with it to see if it fits my needs:)


                              "You're obviously a superstar." - Christian Graus about me - 12 Feb '03 "Obviously ???  You're definitely a superstar!!!" - mYkel - 21 Jun '04 "There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05 Within you lies the power for good - Use it!

                              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