0

str.find('X') の反対 - 特定の文字とは異なる std::string の最初の文字を見つける最も効率的な方法は何ですか? 主に X'es で構成される文字列を持っているが、ある時点で別の文字がある場合、どうすればすばやく見つけることができますか?

4

2 に答える 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 に答える