str.find('X') の反対 - 特定の文字とは異なる std::string の最初の文字を見つける最も効率的な方法は何ですか? 主に X'es で構成される文字列を持っているが、ある時点で別の文字がある場合、どうすればすばやく見つけることができますか?
2 に答える
5
std::string str = "XXXXXXXXXXXXXXX.XXXXXXXXXXX";
size_t index = str.find_first_not_of('X');
しかし、昔ながらの for ループも同様に優れています。
または、インデックスの代わりにイテレータが必要な場合は、おそらく次のようになります。
std::string::iterator = std::find_if(str.begin(), str.end(),
[](char c){ return c != 'X'; });
于 2012-08-07T21:27:04.900 に答える
0
最も効率的な方法は、文字列を反復処理し、各文字を と比較して'X'
、異なる最初の文字を返すことだと思います。
文字列についての予備知識がなければ、 よりも優れたアプローチは見当たりません。また、連続O(n)
して呼び出すfind('X')
ことは、文字を反復処理するよりも悪い可能性があります。
于 2012-08-07T21:26:36.620 に答える