【发布时间】:2017-11-26 19:51:37
【问题描述】:
我有地图,其中的键是 std::string。我想在地图中找到那些以"DUPA/" 前缀开头的元素。找到下限很容易,但上限有点问题。我写了这样一段代码:
const char* prefix = "DUPA/";
const char* firstAfterPrefix = "DUPA0";
auto prefixedBeginIt = myMap.upper_bound(prefix);
auto prefixedEndIt = myMap.lower_bound(firstAfterPrefix);
代码运行良好,但我不认为它很优雅,因为必须知道0 在 ASCII 表中首先位于 / 旁边。第二种方法是复制前缀并增加最后一个符号。你知道更优雅的解决方案吗?
【问题讨论】:
-
你的 prefixedBeginIt 找不到与前缀相同的键,你应该使用 lower_bound 而不是 upper_bound。
-
@CAF 根本与问题无关。这是找不到前缀本身的预期行为。