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に従って、この関数は、一致が見つからない場合、つまりtmp
等しい必要がある場合に「最後」(末尾を超えた) のインデックスを返すことになっていdictlen
ます。私の場合、それは常に開始インデックスを返します。つまり、tmp equal to 0
両方を取得dict
しますdict
。
問題は、ポインターの処理と受け渡しにあると思います。ベクターのdefault comparator
場合と同様に、この場合も を使用できるはずです。また、明示的なものを渡そうとしましたが、役に立ちませんでした。
私はこのコンパレータを試しました -
bool compStr(const char *a, const char *b){
return strcmp(a,b)<0;
}
ベクトルなどを使用することは知っていALTERNATE
ますが、これの問題を知りたいです。SOだけでなくGoogleでもこれを検索しましたが、似たようなものは見つかりませんでした。