2011-01-28 92 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