2011-01-28 141 views

回答

5

C++標準說,所有的容器必須具有下列的typedef(C++ 03 23.1 /表65):

value_type 
reference 
const_reference 
iterator 
const_iterator 
difference_type 
size_type 

可逆容器必須具有下列的typedef(C++ 03 23.1 /表66):

reverse_iterator 
const_reverse_iterator 
0

我想出了這個程序,找出一套極小子嵌套類型定義的:

#include <iostream> 
#include <iterator> 
#include <vector> 
#include <boost/foreach.hpp> 
#include <boost/range/algorithm/sort.hpp> 

struct Foo 
{ 
    typedef std::vector<int> Vec; 
    typedef Vec::const_reference const_reference; 
    typedef Vec::iterator iterator; 
    typedef Vec::const_iterator const_iterator; 

    iterator begin() {return vec.begin();} 
    iterator end() {return vec.end();} 
    const_iterator begin() const {return vec.begin();} 
    const_iterator end() const {return vec.end();} 
    void push_back(const int& n) {vec.push_back(n);} 

    Vec vec; 
}; 

int main() 
{ 
    Foo f; 
    std::back_insert_iterator<Foo> it(f); 
    *it = 2; ++it; *it = 1; ++it; 
    boost::sort(f); 
    BOOST_FOREACH(int x, f) 
    { 
     std::cout << x << " "; 
    } 
} 

如您所見,至少需要const_referenceiteratorconst_iterator

我應該提到,我編譯了這個gcc 4.4.3和boost 1.43。

+0

什麼使用const_reference? – 2011-01-28 01:08:39