簡體   English   中英

如何為未知容器聲明迭代器變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM