最令人煩惱的解析中臨時迭代器的令人困惑的情況
最令人煩惱的解析,C 中臭名昭著的解析歧義,帶來了令人困惑的問題問題:如何將以下行解釋為函數宣告?
vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
要理解這種奇怪的行為,我們必須深入研究最令人煩惱的解析的細節。第二個臨時迭代器確實可以被解釋為一種類型,即產生不帶參數的迭代器的函數。然而,關鍵在於理解第一個臨時迭代器的解釋。
與第二個迭代器不同,第一個臨時迭代器出現在括號內,並且缺乏明確的參數名稱,令人困惑。這種非常規語法是 C 語言的遺留物,引發了這樣的疑問:這個迭代器代表什麼類型?
答案是 istream_iterator
最終,這段程式碼的令人困惑的本質源自於它對這種過時語法的依賴。它聲明第一個參數是 istream_iterator
以上是為什麼 `vector v(istream_iterator(cin), istream_iterator());` 在 C 中宣告一個函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!