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

📄 root_container.h

📁 很多二维 三维几何计算算法 C++ 类库
💻 H
字号:
// Copyright (c) 2005  Stanford University (USA).// All rights reserved.//// This file is part of CGAL (www.cgal.org); you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public License as// published by the Free Software Foundation; version 2.1 of the License.// See the file LICENSE.LGPL distributed with CGAL.//// Licensees holding a valid commercial license may use this file in// accordance with the commercial license agreement provided with the software.//// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.//// $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.3-branch/Kinetic_data_structures/include/CGAL/Polynomial/internal/Kernel/Root_container.h $// $Id: Root_container.h 28567 2006-02-16 14:30:13Z lsaboret $// //// Author(s)     : Daniel Russel <drussel@alumni.princeton.edu>#ifndef CGAL_POLYNOMIAL_INTERNAL_ROOT_CONTAINER_H#define CGAL_POLYNOMIAL_INTERNAL_ROOT_CONTAINER_H#include <CGAL/Polynomial/basic.h>#include <iterator>CGAL_POLYNOMIAL_BEGIN_INTERNAL_NAMESPACEtemplate <class K>class Root_container{private:  typedef Root_container<K> This;  typedef typename K::Root_stack RE;  typedef typename K::Root   Root;public:  class iterator  {  public:    iterator(){}    iterator(const RE &re): renum_(re){}    typedef Root value_type;    typedef const iterator& reference;    typedef const value_type * pointer;    typedef std::size_t difference_type;    typedef std::forward_iterator_tag iterator_category;    const value_type &operator*() const    {      return renum_.top();    }    pointer operator->() const    {      return &renum_.top();    }    reference operator++() {      renum_.pop();      return *this;    }    iterator operator++(int) {      iterator it= *this;      renum_.pop();      return it;    }    const iterator& operator+(unsigned int i) {      for (unsigned int j=0; j< i; ++j) {	operator++();      }      return *this;    }    bool operator==(const iterator &o) const    {      CGAL_Polynomial_precondition(renum_.empty()				   || o.renum_.empty());      return renum_.empty() && o.renum_.empty();    }    bool operator!=(const iterator &o) const    {      CGAL_Polynomial_precondition(renum_.empty()				   || o.renum_.empty());      if ( renum_.empty() && o.renum_.empty() ) { return false; }      return !renum_.empty() || !o.renum_.empty();    }  protected:    RE renum_;  };   Root_container(const typename K::Function &fn,		 const Root &lb,		 const Root &ub,		 const K &k)    : begin_(RE(fn, lb,ub, k.root_stack_traits_object())){}  const iterator& begin() const  {    return begin_;  }  iterator end() const  {    return iterator();  }protected:  iterator begin_;};CGAL_POLYNOMIAL_END_INTERNAL_NAMESPACE#endif

⌨️ 快捷键说明

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