対呼び出す:C++ネストされたコンストラクタは、関数の宣言次のコードセクションの「バージョン1」と「バージョン2」と表示されたコードスニペットとの違いは何ですか
int main() {
using namespace std;
typedef istream_iterator<int> input;
// version 1)
//vector<int> v(input(cin), input());
// version 2)
input endofinput;
vector<int> v(input(cin), endofinput);
}
私の知る限り理解し、「バージョン1 "は関数宣言として扱われます。しかし、私はなぜ返り値がvector<int>
の関数v
の引数が何であるのか理解できません。
入力イテレータがForwardIteratorsではなく、それらを反復処理するためイテレータが使用されないため、イテレータが残っていないため、後で使用することをお勧めします。 –
あなたがたどり着かないことが必要な場合は、いつも別のスコープを作成することができます:)私は誤って無効なイテレータを使用するリスクは低いと考えています。なぜあなたは誘惑されますか? –
これは、何か間違ったことが起こる恐れよりも味の問題です。彼らは周りにいる必要はありませんし、彼らは名前を付ける必要はないので、私は彼らがそうでないことを好む。 –