我有一个std::map<str,int> my_map
现在,键值映射看起来像这样 -
{["apple",3],["addition",2],["app",7],["adapt",8]}
目标:
计算具有给定前缀的键值的总和。
示例:sum("ap")
应返回 10 (3 + 7)
。
我可以用两个循环和一个 if 条件来实现它。但是,我正在尝试理解某人提交的以下代码来实现这一点。
for (auto it = my_map.lower_bound(prefix);
it != my_map.end() && it->first.substr(0,n) == prefix;
it++)
循环条件在遍历 my_map
的过程中会不会变为假,从而计算出错误的总和?
我不知道代码如何能够给出正确的结果。为什么循环在查找前缀“addition
”时到达键“ap
”时不会退出?
感谢任何形式的帮助。