我无法在map_of_pointers或map_of_stack_objects之间做出选择(或者甚至是shared_ptrs的地图。) 地图上的主要操作是插入/删除/搜索项目。
任何人都可以帮我这个吗? 提前谢谢。
回答你的问题: -
Class Cache
{
private:
A map with key as int and value as AccountDetails
public:
createitem
deleteItem
updateItem
searchItem
};
class AccountDetails
{
AccountData a; ( 20 bytes )
personalData b; ( 20 bytes )
list < positions > c ( Each position is 20 bytes )
}
我相信我已经解释得足以回答这个问题。如果我还缺少某些东西请告诉我,我会加上它。
答案 0 :(得分:0)
这是一个从臀部回答的答案,希望它有所帮助。
使用某种共享指针意味着在销毁地图时内存泄漏的可能性较小。堆栈对象的映射是什么意思?你想让地图包含堆栈指针(裸体或智能)吗?不是个好主意。 向地图添加新密钥值时,该对存储在堆上(std :: map实现为红黑树),因此该对不会在堆栈中。
答案 1 :(得分:0)
通常您会希望将对象放在堆栈上。也就是说,&#34;堆栈对象的映射&#34;应该这样做(我认为你的意思是&#34;不是指针的映射&#34; - 因为很可能,地图中的每个元素都将动态分配。)
只有在以下情况下才能保留指针图:
您只能使用地图访问代码中的指针,并且您不拥有它们(即您从某处收到指针并需要存储它们)
您需要多态行为(即您存储指向基类的指针)
在第一种情况下,您应该存储指针。在第二种情况下,您应该存储智能指针(并在地图中使用智能指针来管理对象的生命周期)。