📄 discreteset.h
字号:
/* $Id: DiscreteSet.h,v 1.4 1997/05/19 02:24:05 matt Exp $ Basic discrete set implemented as a byte array. (c) Apr 95 Matt Phillips */#ifndef _DISCSET_H#define _DISCSET_H#ifndef __GNUC__# include <mem.h>#endif#include "checks.h"#include "Range.h"#define DSET_INCHECK(i) CHECK (i >= LOWER && i <= UPPER, "item outside set")template <class T, int LOWER, int UPPER>class DiscreteSet{public: DiscreteSet () {removeAll ();} void addAll () {memset (data, 1, sizeof (data));} void removeAll () {memset (data, 0, sizeof (data));} void add (T i) {DSET_INCHECK (i); data [i] = 1;} void add (const Range<T> &r) {set (r, 1);} void remove (const Range<T> &r) {set (r, 0);} void remove (T i) {DSET_INCHECK (i); data [i] = 0;} void set (T i, int b) {DSET_INCHECK (i); data [i] = b;} void set (const Range<T> &r, int b) { DSET_INCHECK (r.lower); DSET_INCHECK (r.upper); memset (data + r.lower, b, r.length ()); } int isIn (T i) const {DSET_INCHECK (i); return data [i];} static T getLower () {return (T)LOWER;} static T getUpper () {return (T)UPPER;} static int inRange (T i) {return i >= LOWER && i <= UPPER;} protected: char data [UPPER - LOWER + 1];};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -