我正在尝试 C++ 中的 lower_bound 函数。多次将其用于 1 d 数据类型。
现在,我正在尝试sorted array dict[5000][20]
查找字符串size <=20
。要匹配的字符串在str
.
bool recurseSerialNum(char *name,int s,int l,char (*keypad)[3],string str,char (*dict)[20],int
dictlen)
{
char (*idx)[20]= lower_bound(&dict[0],&dict[0]+dictlen,str.c_str());
int tmp=idx-dict;
if(tmp!=dictlen)
printf("%s\n",*idx);
}
根据http://www.cplusplus.com/reference/algorithm/lower_bound/?kw=lower_bound,如果找不到匹配项,该函数应该返回“last”(超出结尾)的索引,即tmp
应该相等dictlen
。在我的情况下,它总是返回开始索引,即我得到tmp equal to 0
两个 1。当传递一个在dict
和 2 中的字符串时。当传递一个在dict
.
我认为问题在于指针的处理和传递。应该在这种default comparator
情况下可用,就像在向量的情况下可用一样。我也尝试通过一个明确的,但无济于事。
我试过这个比较器 -
bool compStr(const char *a, const char *b){
return strcmp(a,b)<0;
}
我知道ALTERNATE
使用矢量等,但我想知道这个问题。通过谷歌和SO搜索了这个,但没有找到类似的东西。