2017-05-13 11 views
-5

私はこのコードの数行を説明するいくつかの助けが必要..私は、C++に新たなんだとCPLUSPLUS参照を通して見ているが、まだこれを理解できなかった試みた。..C++単純な構文

この関数は、シーケンスを受け入れますそして、テキストの本文とテキストでの配列の出現を返す... は、私が何をすべきかsize_tの.. POS ..やNPOなどを確認していない..感謝..

unsigned int countOccurrences(const std::string& seq, const std::string& text){ 
    size_t count(0); 
    size_t pos(0); 
    while((pos=text.find(seq, pos))!=std::string::npos) { 
    ++pos; 
    count++ ; 
    } 
    return count; 
} 
+0

'std :: string :: npos'それは' nops'が 'string'スコープに由来し、' string'が 'std'スコープにあると言っているスコープの解像度です。そして、 'size_t count(0);'は構文エラーではありませんか? –

+0

@SJayeshいいえ、 'size_t count(0)'は構文エラーではありません。 'size_t count'を値 '0'に初期化します。 'size_t'の代わりにあなたがユーザ定義の型を持っていれば(つまり、ただベクトルをとってみましょう)、それがどういう意味だろうと考えてください。 'std :: vector myVector(0)'は構文エラーではありません。 – Justin

+0

@ジャスティン、はい、それを持っています:)。そして 'size_t'はsizeof()のreturntype userdです。 –

答えて

0

npos多くは終わりを示し(これはend()のインデックスバージョンと考えることができます)。 posは、検索された文字列で見つかった検索文字列の位置です。それは毎回新しいオカレンスを検索するように、すべての反復で増分されます。 size_tは、メモリ内のオブジェクトのサイズを表現するのに適した符号なし整数型です。

この実装では、オーバーラップするオカレンスがカウントされます。

「xaaaay」の「aaa」をカウントすると、2回のカウントがカウントされます。