改善(Refinement)
輸入迭代器實(shí)際上是一個(gè)比較薄弱的概念:它必須的要求很少。輸入迭代器必須支持指針的算術(shù)運(yùn)算的一個(gè)子集(使用前綴和后綴操作符+來增加輸入迭代器)),但是并不是需要指針?biāo)械乃阈g(shù)運(yùn)算。這對(duì)于find算法已經(jīng)足夠了,但是一些另外的算法的參數(shù)需要滿足額外的要求。reverse算法,它的參數(shù)的“減少”(decrement)功能必須要像“增加”(increment)功能一樣的,它使用表達(dá)式 --last。在概念方面,我們說revers算法的參數(shù)必須是雙向迭代器(Bidirectional Iterator)模式,而不是輸入迭代器。
雙向迭代器概念非常類似于輸入迭代器概念:它只是簡單的增加了一些額外的要求。雙向迭代器模式類型是輸入迭代器模式類型的一個(gè)子集。任何一個(gè)類型,如果它是雙向迭代器模式,那么它肯定也是輸入迭代器模式。例如,int*,既是雙向迭代器模式又是輸入迭代器模式。但istream_iterator,只是一個(gè)輸入迭代器模式。它不符合更嚴(yán)格的雙向迭代器的要求。雙向迭代器是輸入迭代器的一個(gè)改進(jìn)。改進(jìn)這個(gè)概念就跟c++類中的繼承非常相似:我們使用不同的詞,而不叫它“繼承”的最主要的原因是強(qiáng)調(diào)“改進(jìn)”的概念而不是實(shí)際類型。
除了我們已經(jīng)討論的兩個(gè)迭代器概念,其實(shí)還有另外三個(gè)迭代器概念:這5個(gè)迭代器概念有輸出迭代器,輸入迭代器,前向迭代器,雙向迭代器和隨機(jī)訪問迭代器;前向迭代器是輸入迭代器的改進(jìn),雙向迭代器是前向迭代器的改進(jìn),隨機(jī)訪問迭代器是雙向迭代器的改進(jìn)。輸出迭代器與其他四個(gè)迭代器是有關(guān)系的,擔(dān)不是一部分層次的改進(jìn):它不是任何其他迭代器概念的改進(jìn),也沒有其他迭代器是從改進(jìn)它而來的。迭代器概述有更多關(guān)于迭代器一般的消息。
容器類,像迭代器一樣,被組織成一個(gè)層次的概念。所有容器都是容器概念模式;更完善的概念;如序列和關(guān)聯(lián)容器,描述特定類型的容器。
下一節(jié) 《STL的其他部分》
posted on 2012-02-28 10:33
canaan 閱讀(2318)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
外文翻譯