我正在寫一個測試程序,並發現一個非常有趣的案例std::list
的行爲。std :: list是一個循環列表!等等,什麼?
#include <list>
#include <algorithm>
#include <iostream>
int main()
{
std::list<int> mylist;
std::list<int>::iterator iter;
for(int i=3; i<10; ++i){
mylist.push_back(i);
}
iter = mylist.begin();
iter--;
iter--;
std::cout<<*iter<< std::endl;
std::cout<<std::distance(mylist.end(), mylist.begin())<<std::endl;
}
輸出是:
9
1
如果我沒有記錯的話,這種行爲是有關循環清單。我從未見過論壇,書籍或討論,其中提到標準列表是一個循環列表。我的GCC版本是4.1.2。 那我正確嗎?是標準的std::list
一個循環列表?
以及爲什麼結束和開始之間的距離是1? – 2014-09-19 11:04:30
@EduardRostomyan:您對'std :: distance'的調用也是未定義的行爲。 – 2014-09-19 11:05:18
如何確定?因爲當我在這種情況下計算向量的距離時,該函數返回一個負數。 – 2014-09-19 11:07:09