STL講座
dequeのメンバ関数 end

両端キューの末尾を指す反復子を返す。
注意:最後の要素の次の指す反復子

const_iterator end() const;
iterator end();

#include <iostream>
#include <deque>
#include <cstdio>
using namespace std;

int main()
{
        deque<int> ob;
        deque<int>::iterator p, p2;
        int i;

        for(i=0; i<10; ob.push_back(i++)) ;
        p = ob.end() - 1;
        cout << *p << "  ";
        while(p != ob.begin()) {
                p--;
                cout << *p << "  ";
        }


        cout << "\n\n-------------------------------------------\n\n";
        cout << "endは両端キューの最後の要素の次の要素を指す反復子を返す\n\n";

        cout << "操作1\n";
        p = ob.begin();
        for(i=0; i<ob.size()+1; i++) {
                cout << *p << " ";
                p++;
        }
        p = ob.end();
        cout << "\nob.end()が指す値: " << *p << "\n\n";

        cout << "操作2\n";
        ob.push_back(0);
        p2 = ob.begin();
        for(i=0; i<ob.size()+1; i++) {
                cout << *p2 << " ";
                p2++;
        }
        cout << "\n操作1のob.end()が指していた値: " << *p << "\n\n";

        return 0;
}

実行結果

9 8 7 6 5 4 3 2 1 0

-------------------------------------------

endは両端キューの最後の要素の次の要素を指す反復子を返す

操作1
0 1 2 3 4 5 6 7 8 9 -842150451
ob.end()が指す値: -842150451

操作2
0 1 2 3 4 5 6 7 8 9 0 -842150451
操作1のob.end()が指していた値: 0

-842150451は処理系のよって値が変わるか・・・コンパイルエラーになるか・・・