[英]How to declare an iterator variable for unknown container
如何聲明未知STL容器的迭代器? 例如,我想編寫一個接收容器的函數,並使用迭代器將其打印出來:
template <class Container> void print(Container c) {
// how to declare iterator???????
my_iterator = c.begin();
while(my_iterator!=c.end()) {
cout << *my_iterator << endl;
my_iterator++;
}
}
在C ++ 03中,您需要顯式地從容器類型中獲取迭代器類型:
typename Container::iterator it;
typename Container::const_iterator cit;
在C ++ 11中,您可以使用auto
:
auto my_iterator = c.begin(); // iterator in this case
auto my_iterator = c.cbegin(); // const_iterator always
另請注意,正如我的@Matthieu建議的那樣,您可以在C ++ 11中使用基於范圍的循環來簡化代碼:
template <class Container>
void print(const Container& c)
{
for (const auto& elem : c)
cout << c << endl;
}
去做:
for (auto& var : container)
{
cout << var << endl;
}
要顯示容器的每個元素(以及任何其他類型的容器,甚至是字符串,矢量或地圖,......)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.