指针映射或堆栈对象映射
map of pointers OR map of stack objects
我被困在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 )
}
我相信我已经解释够了,可以回答这个问题。。如果我还缺少什么,请让我知道我会添加它。
这是一个直截了当的答案,希望能有所帮助。
使用某种共享指针意味着在销毁映射时内存泄漏的可能性较小。堆栈对象的映射是什么意思?你想让映射包含指向堆栈上内容的指针(裸指针或智能指针)吗?不是个好主意。当向映射添加新的键、值时,该对存储在堆上(std::map实现为红黑树),因此该对不会在堆栈上。
通常您希望将对象放置在堆栈上。也就是说,"堆栈对象的映射"应该这样做(我认为你的意思是"不是指针的映射"——因为很可能,映射中的每个元素都会动态分配)。
只有在以下情况下,您才应该保留指针映射:
-
您只能使用映射访问代码中的指针,并且您不拥有它们(即,您从某个地方接收到指针并需要存储它们)
-
您需要多态行为(即存储指向基类的指针)
在第一种情况下,应该存储指针。在第二种情况下,应该存储智能指针(并让映射中的智能指针管理对象的生存期)。
相关文章:
- 使用std::函数映射对象方法
- 使用"std::unordereded_map"映射到"std::list"对象
- 在c++中访问int到类对象的映射时出错
- 如何创建对象函数指针C++映射?
- 准确了解对象在内存中的映射方式
- 将包含不可复制对象的对插入到映射中
- 用unordered_map映射对象作为键
- 如何通过文件映射对象重新映射共享内存的视图?
- 文件映射对象和文件对象可以互换使用吗
- 如何从 std::映射'm'对象中返回 Iter 以'n'选定对象 (c++)
- 包含抽象基类ptr_map的映射对象
- C++ 映射对象的顺序
- 更新标准::映射对象数据
- C++ 内存泄漏与我的 std::映射 &对象和标准::矢量 &对象
- Windows CreateFileMapping:具有相同支持文件的不同文件映射对象
- 使用C++中的文件映射对象进行读取
- c++构造函数映射对象(已编辑)
- 在映射对象上定义自定义迭代器:神秘的"incomplete type"错误
- 在(c++) cocos2dx中添加映射对象到Vector
- c++代码中共享文件映射对象大小的问题