【发布时间】:2016-01-10 11:47:12
【问题描述】:
我有一个 C++ 程序,我想在其中插入 std::map 中缺少的任何键的默认值。我认为最简单的方法是使用std::map::operator[]() 就像POSIX touch 命令一样 - 也就是说,如果它已经存在则保持值不变,但如果它不存在则创建它。对于example,
#include <map>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> keys = {0, 1};
map<int, int> m;
m[1] = 5;
m[2] = 12;
for (const int i : keys)
{
m[i]; // touch value
}
for (auto const & kv : m)
{
cout << kv.first << ", " << kv.second << endl;
}
}
我能否确定编译器不会优化 m[i]; 语句,因为我没有对它们“做”任何事情? (不明确分配给,不读取。)
【问题讨论】:
标签: c++ c++11 dictionary stl