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. How to get size in memory of STL <map> for use with memcpy ?

How to get size in memory of STL <map> for use with memcpy ?

Scheduled Pinned Locked Moved C / C++ / MFC
c++performancehelptutorialquestion
5 Posts 4 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.
  • M Offline
    M Offline
    Mike the Red
    wrote on last edited by
    #1

    I'm trying to copy a STL to a memory mapped file, but I can't figure out how to get the actual size of the map to know how many bytes to copy. map::size only returns the number of items in the map, and the sizeof operator returns an impossibly small number. I'm not sure it'll help, but my map is defined thusly:

    struct struct_XFer {
    char name[MAX_PATH]; // filename
    double size; // filesize
    double transferred; // bytes transferred
    COleDateTime created; // time the transfer record was created
    COleDateTime modified; // time the transfer record was last modified
    };
    map <int, struct_XFer> theMap;
    typedef pair <int, struct_XFer> XFer_Pair;

    :confused: I've been struggling with this for several days... any help would be greatly appreciated! -MZR

    S C M 3 Replies Last reply
    0
    • M Mike the Red

      I'm trying to copy a STL to a memory mapped file, but I can't figure out how to get the actual size of the map to know how many bytes to copy. map::size only returns the number of items in the map, and the sizeof operator returns an impossibly small number. I'm not sure it'll help, but my map is defined thusly:

      struct struct_XFer {
      char name[MAX_PATH]; // filename
      double size; // filesize
      double transferred; // bytes transferred
      COleDateTime created; // time the transfer record was created
      COleDateTime modified; // time the transfer record was last modified
      };
      map <int, struct_XFer> theMap;
      typedef pair <int, struct_XFer> XFer_Pair;

      :confused: I've been struggling with this for several days... any help would be greatly appreciated! -MZR

      C Offline
      C Offline
      CPallini
      wrote on last edited by
      #2

      You actually need to write some code to serialize it ( see, for instance [^]) or use boost serialization [^]. :)

      If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
      This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
      [My articles]

      1 Reply Last reply
      0
      • M Mike the Red

        I'm trying to copy a STL to a memory mapped file, but I can't figure out how to get the actual size of the map to know how many bytes to copy. map::size only returns the number of items in the map, and the sizeof operator returns an impossibly small number. I'm not sure it'll help, but my map is defined thusly:

        struct struct_XFer {
        char name[MAX_PATH]; // filename
        double size; // filesize
        double transferred; // bytes transferred
        COleDateTime created; // time the transfer record was created
        COleDateTime modified; // time the transfer record was last modified
        };
        map <int, struct_XFer> theMap;
        typedef pair <int, struct_XFer> XFer_Pair;

        :confused: I've been struggling with this for several days... any help would be greatly appreciated! -MZR

        S Offline
        S Offline
        Stuart Dootson
        wrote on last edited by
        #3

        Ordinary std::map implementations don't work in a way that lets you do that - see this thread[^] for the reasons why and suggestions of what you can do to get around that.

        Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

        1 Reply Last reply
        0
        • M Mike the Red

          I'm trying to copy a STL to a memory mapped file, but I can't figure out how to get the actual size of the map to know how many bytes to copy. map::size only returns the number of items in the map, and the sizeof operator returns an impossibly small number. I'm not sure it'll help, but my map is defined thusly:

          struct struct_XFer {
          char name[MAX_PATH]; // filename
          double size; // filesize
          double transferred; // bytes transferred
          COleDateTime created; // time the transfer record was created
          COleDateTime modified; // time the transfer record was last modified
          };
          map <int, struct_XFer> theMap;
          typedef pair <int, struct_XFer> XFer_Pair;

          :confused: I've been struggling with this for several days... any help would be greatly appreciated! -MZR

          M Offline
          M Offline
          Mike the Red
          wrote on last edited by
          #4

          No text

          T 1 Reply Last reply
          0
          • M Mike the Red

            No text

            T Offline
            T Offline
            ThatsAlok
            wrote on last edited by
            #5

            yeap you have lot of work to do if you use memcpy on map :-),

            "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
            Never mind - my own stupidity is the source of every "problem" - Mixture

            cheers, Alok Gupta VC Forum Q&A :- I/IV Support CRY- Child Relief and You

            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