Rumah >pembangunan bahagian belakang >C++ >Mengapakah `vector v(istream_iterator(cin), istream_iterator());` Mengisytiharkan Fungsi dalam C ?
Kes Membingungkan Penghalau Sementara dalam Penghuraian Paling Menjengkelkan
Penghuraian Paling Menjengkelkan, kekaburan penghuraian yang terkenal dalam C , menimbulkan kebingungan soalan: bagaimana baris berikut boleh ditafsirkan sebagai fungsi pengisytiharan?
vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
Untuk memahami tingkah laku pelik ini, kita mesti menyelidiki butiran Parse Paling Menjengkelkan. Lelaran sementara kedua sememangnya boleh ditafsirkan sebagai jenis, iaitu fungsi yang menghasilkan lelaran tanpa parameter. Walau bagaimanapun, intinya terletak pada pemahaman tafsiran lelaran sementara pertama.
Berbeza dengan lelaran kedua, lelaran sementara pertama kelihatan mengelirukan dibungkus dalam kurungan dan tidak mempunyai nama parameter yang jelas. Sintaks tidak konvensional ini, warisan C, mencetuskan pertanyaan: apakah jenis yang diwakili oleh iterator ini?
Jawapannya ialah istream_iterator
Akhirnya, sifat membingungkan kod ini berpunca daripada pergantungan pada sintaks usang ini. Ia mengisytiharkan bahawa parameter pertama ialah istream_iterator
Atas ialah kandungan terperinci Mengapakah `vector v(istream_iterator(cin), istream_iterator());` Mengisytiharkan Fungsi dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!