c++ - 将空 vector 放入 std::map()

标签 c++ stl

如何将空 vector 放入 std::map ?例如,如果我有 std::map<int, std::vector<int>> ,我想要 map[4]包含一个空 std::vector<int> ,我能叫什么?

最佳答案

如果您使用operator[](const Key&),映射将自动放置一个值初始化(即在std::vector , 默认构造的)值(如果您访问不存在的元素)。请参阅此处:

http://en.cppreference.com/w/cpp/container/map/operator_at

(自 C++ 11 起,细节有点复杂,但就您而言,这才是重要的)。

这意味着如果您的 map 是空的并且您执行了map[4],它会很容易地为您提供对空(默认构造的) vector 的引用。分配空 vector 是不必要的,尽管它可能会让您的意图更加清晰。

演示:https://godbolt.org/g/rnfW7g

关于c++ - 将空 vector 放入 std::map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754586/

相关文章:

c++ - 如何检查进程或线程是否存在或未在 C++ 中给出它们的 ID?

c++ - 在 C++ 中使用 multimap 的问题

c++ - 范围修剪 View 实现不适用于反向 View

c++ - STL::vector 无法分配内存 'randomly'

c++ - 调用 IConnectionPoint::Advise 导致崩溃

c++ - Qt:当主窗口被模式 QDialog 阻塞时,如何将焦点放在从主窗口创建的无模式 QDialog

c++ - 奇怪的调试器问题?

c++ - 关于 Ghostscript 的信息

c - C 的 std::vector 替代品

c++ - VS2010 中令人困惑的 std::string::c_str() 行为