使用區間成員函數而不是其相應的單元素成員函數的原因:
l 通過使用區間成員函數,通常可以少寫一些代碼。
l 使用區間成員函數通常會得到意圖清晰和更加直接的代碼。
l 在一般情況下,效率更高。
區間操作有以下幾種:
區間創建。所有的標準容器都提供瞭如下形式的構造函數:
container::container (InputIteratorbegin, InputIterator end).
當傳給這種構造函數的迭代器是istream_iterator或istreambuf_iterator時,你可能會遇到C++最煩人的分析(parse)機制,它使編譯器把這條語句解釋爲函數的聲明,而不是函數定義新的容器對象。
區間插入。所有的標準序列容器都提供瞭如下的insert:
void container::insert (iteratorposition, InputIterator begin, InputIterator end);
//在何處插入區間,區間開始,區間結束。
關聯容器利用比較函數來決定元素該插入何處,它們提供了一個省去position參數的函數原型:
void container::insert(InputIteratorbegin, InputIterator end);
在尋找區間形式的insert來替代單元素版本時,不要忘了一些單元素的變體使用了不同的函數名稱,從而把自己給掩蓋了。比如,push_front和push_back都向容器中插入單一元素,儘管他們不叫insert。當你看到使用push_front或push_back的循環調用,或者front_inserter或back_inserter被作爲參數傳遞給copy函數時,你會發現在這裏區間形式的insert可能是更好的選擇。
區間刪除。所有的標準容器都提供了區間形式的刪除(erase)操作,但對於序列和關聯容器,其返回值有所不同。
序列容器提供了這樣的形式:
iterator container::erase(iteratorbegin, iterator end);
而關聯容器則提供瞭如下形式:
void container::erase(iterator begin,iterator end);
區間賦值。所有的標準容器都提供了區間形式的assign:
void container::assign(inputIteratorbegin, InputIterator end);