次のようなプロトタイプを使用して、いくつかの関数を作成しました。
template <typename input_iterator>
int parse_integer(input_iterator &begin, input_iterator end);
呼び出し元が文字の範囲を提供し、関数が文字を整数値として解釈して返しbegin
、最後に使用された文字の 1 つ後ろに残すという考え方です。例えば:
std::string sample_text("123 foo bar");
std::string::const_iterator p(sample_text.begin());
std::string::const_iterator end(sample_text.end());
int i = parse_integer(p, end);
これはi
123 に設定されたままになりp
、 の前のスペースを「指す」ことになりfoo
ます。
それ以来、参照によってイテレータを渡すのは悪い形式だと (説明なしに) 言われました。フォームが悪いのでしょうか?もしそうなら、なぜですか?