How to get size in memory of STL <map> for use with memcpy ?
-
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
-
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
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] -
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
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
-
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
No text
-
No text
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" - Mixturecheers, Alok Gupta VC Forum Q&A :- I/IV Support CRY- Child Relief and You