私はregexpsの中から検索しなければならないので、自分自身でmap.findを実装しようとしています。 しかし私のコードは長く働いています。ヘルプplz。コードをどのように改善できますか?他の方法でイテレータに整数を追加することはできますか?ビルトイン機能は10倍以上速く動作します。map.find implementation
iterator find (string toFind)
{
iterator begin=mainMap.begin();
int L=0;
int R=mainMap.size();
iterator M;
while (L!=R)
{
M=begin;
addition(&M,((R+L)/2));
if (match (&(*M).first, &toFind))
return M;
if (toFind<(*M).first)
{
R=(R+L)/2;
}
else
L=(R+L)/2+1;
}
return mainMap.end();
}
void addition (iterator* it, int n)
{
for(int i=0;i<n;i++, (*it)++)
{
}
}
bool match (const string* expression, const string* line)
{
return *expression==*line;
}
mapに{"a * 5"、 "b * 4"、 "c5"}が含まれている場合 find( "any")=要素 "a * 5"のイテレータ。 find( "bingo")=要素 "b * 4"のイテレータ。 find( "nothing")=過去の最後のイテレータ –