2013-02-16 55 views
2

在下面的代碼中,我創建了一個insert_iterator而不包含迭代器頭文件。 這是怎麼可能編譯的?我是c/C++的新手,所以這可能會有一個明顯的解釋。C++:創建一個insert_iterator而不包含#include <iterator>

#include <list> 
//#include <iterator> 

int main() 
{ 

    std::list<int> mylist(10,1); 
    std::insert_iterator<std::list<int> > it(mylist,mylist.begin()); 

    return(0); 
} 

回答

7

它發生在編譯,因爲一些其他的頭,<list>你的情況,是拉動<iterator>爲好。這可能適用於一個實現,但在另一個實現上失敗,或者甚至在當前庫實現的下一個版本上失敗。

你應該總是包含定義你使用的東西的頭文件,以確保它能夠在任何地方編譯。請注意,有一些標準頭文件被其他標準頭文件所保證,但我不認爲這是例外之一。

+0

你好K-ballo。我應該包含迭代器的默認列表。獲得的經驗... – jorgez 2013-02-16 18:52:38

+0

@jorgez:只要記住,你不能接力 – 2013-02-16 19:07:55