好日子,STL中迭代器和容器之間的關係
假設我正在用C++編寫一個類似Python的範圍。它提供了隨機存取容器的所有特性(當然是不可變的)。我在腦海中提出了一個關於以下情況的問題:
我有兩個不同的迭代器,指向不同的範圍容器的實例。問題是這兩個範圍是等於。即它們表示相同的範圍。你會允許以下情況:
fact: range1 == range2 e.g.
---------------------------
range range1(10, 20, 1), range2((10, 20, 1);
range::iterator i = range1.begin(), j = range2.begin();
assert(i == j); // would you allow this?
很抱歉,如果我缺少在STL :)一個簡單的設計規則
謝謝。這是我第一次知道這個:)你知道我在哪裏可以找到標準的? – AraK 2010-02-10 02:52:51
我會補充一點,你是否在使用字符串,如果實現對所有字符串執行了實際操作,比較兩個==字符串可能會導致相同的行爲。這不是必需的,但可能會發生。如果確實發生,我不會擔心,但我也不會要求它發生。 – KitsuneYMG 2010-02-10 03:02:12
當你試圖比較指向不同容器的迭代器時,VC至少會抱怨。你知道這個標準是否認爲比較它們是非法的?或者VC只是過度樂於助人? 24.1的第7段看起來與現在最接近,但它實際上描述了「範圍」和「算法」。問題是,即使它們不指向相同的容器,比較'i == j'是否有效? – 2010-02-22 18:59:30