bag.hp

来自「早期freebsd实现」· HP 代码 · 共 80 行

HP
80
字号
// This may look like C code, but it is really -*- C++ -*-/* Copyright (C) 1988 Free Software Foundation    written by Doug Lea (dl@rocky.oswego.edu)This file is part of the GNU C++ Library.  This library is freesoftware; you can redistribute it and/or modify it under the terms ofthe GNU Library General Public License as published by the FreeSoftware Foundation; either version 2 of the License, or (at youroption) any later version.  This library is distributed in the hopethat it will be useful, but WITHOUT ANY WARRANTY; without even theimplied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULARPURPOSE.  See the GNU Library General Public License for more details.You should have received a copy of the GNU Library General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, 675 Mass Ave, Cambridge, MA 02139, USA.*/#ifndef _<T>Bag_h#ifdef __GNUG__#pragma interface#endif#define _<T>Bag_h 1#include <Pix.h>#include "<T>.defs.h"class <T>Bag{protected:  int                   count;public:  virtual              ~<T>Bag();  int                   length();                // current number of items  int                   empty();  virtual Pix           add(<T&> item) = 0;      // add item; return Pix  virtual void          del(<T&> item) = 0;      // delete 1 occurrence of item#undef remove  virtual void          remove(<T&> item);       // delete all occurrences  virtual void          clear();                 // delete all items  virtual int           contains(<T&> item);     // is item in Bag?  virtual int           nof(<T&> item);          // how many in Bag?  virtual Pix           first() = 0;             // Pix of first item or 0  virtual void          next(Pix& i) = 0;        // advance to next or 0  virtual <T>&          operator () (Pix i) = 0; // access item at i  virtual Pix           seek(<T&> item, Pix from=0); // Pix of next occurrence  virtual int           owns(Pix i);             // is i a valid Pix  ?  void                  error(const char* msg);  virtual int           OK() = 0;                // rep invariant};inline <T>Bag::~<T>Bag() {}inline int <T>Bag::length(){  return count;}inline int <T>Bag::empty(){  return count == 0;}inline int <T>Bag::contains(<T&> item){  return seek(item) != 0;} #endif

⌨️ 快捷键说明

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