// memsize.h #ifndef memsize_H #define memsize_H // Return the total memory (in bytes) associated with // various data structures. #include #include #include #include // String. size_t memsize_string(std::string); // Vector. // Contained objects size is evaluated with sizeof. template size_t memsize_vector(std::vector arg) { return sizeof(arg) + arg.capacity()*sizeof(T); } // Set. // Contained objects size is evaluated with sizeof. template size_t memsize_set(std::set arg) { struct Node { bool color; Node* parent; Node* left; Node* right; }; return sizeof(arg) + arg.size()*(sizeof(T) + sizeof(Node)); } // Multiset. // Contained objects size is evaluated with sizeof. template size_t memsize_multiset(std::multiset arg) { struct Node { bool color; Node* parent; Node* left; Node* right; }; return sizeof(arg) + arg.size()*(sizeof(T) + sizeof(Node)); } // Map. // Contained objects size is evaluated with sizeof. template size_t memsize_map(std::map arg) { struct Node { bool color; Node* parent; Node* left; Node* right; }; return sizeof(arg) + arg.size()*(sizeof(std::pair) + sizeof(Node)); } // Vector of strings. size_t memsize_vector_string(std::vector arg); // Map of string-strings. size_t memsize_map_string(std::map arg); #endif