我正在寻找调整容器行为的最佳做法。 stl容器不太适合继承,编写50个传递方法也不理想。这是我今天要处理的具体例子。
在std :: map上调用operator [](T t)将插入一个未找到_first的条目。
std::map<int,string> m;
string s = m[10]; // will insert empty string into the map
所以我最后打电话给这样的话。
string mapfind(int id, const map<int, string>& m)
{
auto entry = m.find(id);
if(entry != m.end())
{
return *entry;
} else {
return "not found";
}
};
这也很糟糕,因为外部函数需要知道被调用。如何修改容器以使用默认值而不是改变状态?