[英]argument list for class template “std::iterator” is missing
argument list for class template "std::iterator" is missing
我在這個場合得到這個錯誤:
for(std::iterator it = deque.begin(); it != deque.end(); it++)
所以我有一個以模板方式指定的想法,如下所示:
for(std::iterator<sf::RectangleShape> it = deque.begin(); it != deque.end(); it++)
但后來我得到不同的錯誤:
expected a declaration
我對這里發生的事情有點困惑。 我需要的只是迭代器,因為這樣我可以到達std::deque
的最后一個元素並將其設置為不同的矩形顏色。
提前致謝。
假設您要遍歷std::deque<sf::RectangleShape>
: std::deque<sf::RectangleShape>
容器的非const
成員函數begin()
和end()
返回的類型既不是std::iterator
也不是std::iterator<sf::RectangleShape>
但實際上是std::deque<sf::RectangleShape>::iterator
:
for (std::deque<sf::RectangleShape>::iterator it = deque.begin(); it != deque.end(); ++it)
正如其他答案中已經建議的那樣,您可以,因為 C++11,只需依靠auto
:
for (auto it = deque.begin(); it != deque.end(); ++it)
正如您可能已經注意到的那樣,必須只編寫auto
而不是std::deque<sf::RectangleShape>::iterator
可能不太容易出錯。 更好的是,當您遍歷整個容器時,您可以,因為 C++11,只需使用range-for 循環:
for (auto& elem: deque)
在這種情況下, elem
不是deque
元素的迭代器,而是對元素本身的引用(即sf::RectangleShape&
)。
嘗試使用auto
聲明迭代器:
for (auto it = deque.begin(); it != deque.end(); it++)
讓編譯器為它決定合適的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.