saving a std::map instance into harddisk

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • ulaskaraoz@gmail.com

    saving a std::map instance into harddisk

    Hi,
    I have a std::map instance that I want to save into harddisk so that I
    donot have to recompute it each time. The map itself is keyed by a
    string and the values are pointers to other objects. Is it possible the
    whole data structure so that it can be loaded later?
    Thanks

  • Lionel B

    #2
    Re: saving a std::map instance into harddisk

    On Tue, 02 Jan 2007 13:29:51 -0800, ulaskaraoz@gmai l.com wrote:
    Hi,
    I have a std::map instance that I want to save into harddisk so that I
    donot have to recompute it each time. The map itself is keyed by a
    string and the values are pointers to other objects. Is it possible the
    whole data structure so that it can be loaded later?
    Yes - but it's by no means trivial. You want to read up on
    "serialization" :



    --
    Lionel B

    Comment

    • Victor Bazarov

      #3
      Re: saving a std::map instance into harddisk

      ulaskaraoz@gmai l.com wrote:
      I have a std::map instance that I want to save into harddisk so that I
      donot have to recompute it each time. The map itself is keyed by a
      string and the values are pointers to other objects. Is it possible
      the whole data structure so that it can be loaded later?
      Not really (or perhaps I don't understand the question). Pointers are
      meaningless outside of the current running process, so saving their
      values to file would not help. Saving objects behind those pointer
      would be better, of course, but then you'd be duplicating them. Maybe
      you could rethink your approach or have some kind of permanent "handle"
      (number, ID, whatever) assigned to every object (uniquely of course)
      and then save those along with the strings...

      I don't see a C++ language problem here, though.

      V
      --
      Please remove capital 'A's when replying by e-mail
      I do not respond to top-posted replies, please don't ask


      Comment

      • John

        #4
        Re: saving a std::map instance into harddisk


        Rebuilding takes O(nlogn)
        Loading takes O(n) with a larger constant.

        Even if you could store it on the hard drive, probably it will
        take more time to load that map than to rebuild it!

        My 2 cents,
        --j

        Victor Bazarov wrote:
        ulaskaraoz@gmai l.com wrote:
        I have a std::map instance that I want to save into harddisk so that I
        donot have to recompute it each time. The map itself is keyed by a
        string and the values are pointers to other objects. Is it possible
        the whole data structure so that it can be loaded later?
        >
        Not really (or perhaps I don't understand the question). Pointers are
        meaningless outside of the current running process, so saving their
        values to file would not help. Saving objects behind those pointer
        would be better, of course, but then you'd be duplicating them. Maybe
        you could rethink your approach or have some kind of permanent "handle"
        (number, ID, whatever) assigned to every object (uniquely of course)
        and then save those along with the strings...
        >
        I don't see a C++ language problem here, though.
        >
        V
        --
        Please remove capital 'A's when replying by e-mail
        I do not respond to top-posted replies, please don't ask

        Comment

        • Gianni Mariani

          #5
          Re: saving a std::map instance into harddisk

          John wrote:
          Rebuilding takes O(nlogn)
          Loading takes O(n) with a larger constant.
          >
          Even if you could store it on the hard drive, probably it will
          take more time to load that map than to rebuild it!
          AFAICT there is no interface for std::map that provides for
          loading/unloading and maintaining/optimizing the internal structures
          other than a "hint" iterator i.e.:

          iterator insert(iterator hint, const value_type& x)

          Seems like no information but the elements and the order needs to be
          stored on disk to employ this.

          I doubt that this will result in an O(N) insertion or any significant
          optimization for that matter but I'm willing to be proved wrong.

          Comment

          Working...