⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 map_iterator.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
//// Boost.Pointer Container////  Copyright Thorsten Ottosen 2003-2005. Use, modification and//  distribution is subject to the Boost Software License, Version//  1.0. (See accompanying file LICENSE_1_0.txt or copy at//  http://www.boost.org/LICENSE_1_0.txt)//// For more information, see http://www.boost.org/libs/ptr_container///#ifndef BOOST_PTR_CONTAINER_MAP_ITERATOR_HPP#define BOOST_PTR_CONTAINER_MAP_ITERATOR_HPP#if defined(_MSC_VER) && (_MSC_VER >= 1200)# pragma once#endif#include <boost/config.hpp>#include <boost/iterator/iterator_adaptor.hpp>#include <boost/utility/compare_pointees.hpp>#include <utility>#if defined(BOOST_MSVC)  # pragma warning(push)  # pragma warning(disable:4512)    // Assignment operator could not be generated.  #endif namespace boost{     namespace ptr_container_detail    {        template< class F, class S >        struct ref_pair        {            typedef F first_type;            typedef S second_type;            const F& first;            S        second;            template< class F2, class S2 >            ref_pair( const std::pair<F2,S2>& p )            : first(p.first), second(static_cast<S>(p.second))            { }            template< class RP >            ref_pair( const RP* rp )            : first(rp->first), second(rp->second)            { }                        const ref_pair* const operator->() const            {                return this;            }            friend inline bool operator==( ref_pair l, ref_pair r )            {                return l.first == r.first &&                        boost::equal_pointees( l.second, r.second );            }            friend inline bool operator!=( ref_pair l, ref_pair r )            {                return !( l == r );            }            friend inline bool operator<( ref_pair l, ref_pair r )            {                if( l.first == r.first )                    return boost::less_pointees( l.second, r.second );                else                     return l.first < r.first;            }            friend inline bool operator>( ref_pair l, ref_pair r )            {                return r < l;            }            friend inline bool operator<=( ref_pair l, ref_pair r )            {                return !(r < l);            }            friend inline bool operator>=( ref_pair l, ref_pair r )            {                return !(l < r);            }        };    }        template<               class I, // base iterator               class F, // first type, key type              class S  // second type, mapped type            >     class ptr_map_iterator :         public boost::iterator_adaptor< ptr_map_iterator<I,F,S>, I,                                         ptr_container_detail::ref_pair<F,S>,                                         use_default,                                         ptr_container_detail::ref_pair<F,S> >    {        typedef boost::iterator_adaptor< ptr_map_iterator<I,F,S>, I,                                          ptr_container_detail::ref_pair<F,S>,                                         use_default,                                          ptr_container_detail::ref_pair<F,S> >             base_type;    public:        ptr_map_iterator() : base_type()                                         { }                explicit ptr_map_iterator( const I& i ) : base_type(i)        { }        template< class I2, class F2, class S2 >            ptr_map_iterator( const ptr_map_iterator<I2,F2,S2>& r )          : base_type(r.base())        { }           }; // class 'ptr_map_iterator'}#if defined(BOOST_MSVC)  # pragma warning(pop)  #endif #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -