C++基礎::STL中的定理

Inside_Zhang發表於2015-11-16

C++標準庫中凡”凡必須返回兩個value”的函式都使用pair物件

我們以set的插入成員函式insert為例加以說明,因為set容器是一個自動排序的容器,set容器要求,插入元素要返回插入的位置以插入是否成功兩個屬性:

set<int> iset;
...

pair<set<int>::iterator, bool> res = iset.insert(1);
        // 這樣的寫法並無太多實際的意義,不太會直接操縱這樣一個pair物件
        // 或者用auto 關鍵字
        // 或者直接 if(iset.insert(1))
if (res.second)
    cout << "1 inserted" << endl;
else
    cout << "1 already exists" << endl;

STL容器提供的是“value semantic”而不是“reference semantic”

除了效率的問題之外,value semantic的一大問題是無法在數個不同的容器中管理同一份物件。那麼我們該如何在STL容器中實現reference semantic,這個問題可參看<C++STL::兩種方式實現STL容器的reference語義>

empty

對於所有的標準庫型別其empty()成員函式都是一種查詢操作,用以詢問是否容器為空,因此返回一個bool型別變數,而不是一種清零操作。

相關文章