2016-04-08 90 views
-4

我想知道是否有人有體驗空載體,但開始和結束迭代不一樣?空標準::矢量開始!=結束

謝謝

+1

奇怪...你有一個代碼示例來證明這個問題? – blazs

+1

考慮到,對於空的'std :: vector','begin()'等於'end()'是一個嚴格的要求,我懷疑以前是否有人觀察過它。除非我們不討論C++或兼容的C++實現。在那種情況下,你使用的是什麼編譯器和平臺? – IInspectable

+0

我似乎還記得遇到過這種情況,但當整個「STL」事件是新的時候,它可能至少在20年前(也許更多),並且錯誤很常見。 –

回答

3

這應該是不可能的。 [container.requirements.general]中的標準狀態/ 6

begin()返回一個引用容器中第一個元素的迭代器。 end()返回一個迭代器,其中 是容器的過去最終值。如果容器是空的,那麼begin() == end();

所以如果contianer.empty() == true然後container.begin()必須等於container.end()

+0

我知道standart說什麼,但請更加開放,不要把它當作自然規律。可以有這樣的情況,我只是流浪,如果有人有這樣的 –

+1

我不是沒有開放頭腦我只是說根據標準,它不能發生。如果是這樣,那麼你的實現中有一個錯誤,它需要修復。 – NathanOliver

+1

@IrakliDarbuashvili:這些是規則,我不知道目前單一的C++實現無法滿足它們。既然你認爲提供和MCVE是以某種方式泄露祕密信息,我會更傾向於相信,你不是很有經驗,你觀察到的是你的代碼中的錯誤,或者錯誤地解釋你的觀察。 – IInspectable