c++ - 向 Boost unordered_map 添加一个元素

标签 c++ c++11 boost unordered-map

关于具有以下声明的 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/

相关文章:

c++ - & 在函数声明返回类型

c++ - 如何将字符串转换为数学方程式

c++ 序列化 std::error_code 以通过网络传输或保存到磁盘?

c++ - add_month 从 boost::gregorian 中删除?

c++ - istream_iterator 初始化 vector

c++ - 在 main 之前调用一个函数

c++ - 如何修改 boost hana 结构的成员

c++ - 使用 boost/property_tree 从具有多个元素/数组/子数组 C++ 的 json 文件中获取值

c++ - 如何获取 Windows 进程的当前音频输出级别?

c++ - 修改顺序是否有助于 happens-before 关系?