cp.*_*ngr 22 c++ dictionary stl c++11
我有一个C++程序,我想在其中插入缺少的任何键的默认值std::map
.我认为最简单的方法是使用std::map::operator[]()
类似POSIX touch命令 - 也就是说,如果值已经存在则保持不变,但如果不存在则创建它.对于例如,
#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;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以确定编译器不会优化m[i];
语句,因为我没有"做"任何事情吗?(没有明确指定,不读取.)
是的,你可以肯定.当你考虑到有问题的行等同于此时,它可能更直观:
m.operator[](i);
Run Code Online (Sandbox Code Playgroud)
...如果他们做任何事情,你不希望任何函数调用从你的程序中优化出来.
归档时间: |
|
查看次数: |
722 次 |
最近记录: |