关于具有以下声明的 unordered_map:
typedef struct
{
unsigned int length;
unsigned type;
std::string data;
} packet;
boost::unordered::unordered_map<int, packet> map;
当我向这个 map 添加一个对象时,unordered_map 将克隆这个对象并将它附加到它的容器中。 所以我的问题是最好有一个指向结构的指针而不是将其作为对象添加?
如果我有一个原始指针作为 unordered_map 中的值,我是否应该遵循任何方法来使对象在内存中保持事件状态,并且即使我离开函数范围,它的位置也不会被其他变量使用?
最佳答案
你应该使用 std::unordered_map
及其 emplace
成员函数,如果你想避免复制。
一般来说,不要存储指针:您可能会稍微加快一些代码的速度,但如果这甚至是一个瓶颈,权衡是更复杂的代码和增加的风险错误。加上许多您不需要的取消引用。
但如果您认为需要,请随意分析所有三个选项。
关于c++ - 向 Boost unordered_map 添加一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920562/