/* $Id: sample.h 1107 2007-04-16 23:59:13Z rvernica $ Copyright (C) 2007 by The Regents of the University of California Redistribution of this file is permitted under the terms of the GNU Public License (GPL). Date: 05/04/2006 Author: Rares Vernica */ #ifndef _sample_h_ #define _sample_h_ #include using namespace std; class Sample { private: vector sample; vector index; unsigned count; public: Sample(); Sample(const unsigned max); Sample(const unsigned number, const unsigned max); Sample(const string &fileName); vector::const_iterator begin() const; vector::const_iterator end() const; unsigned operator[](const unsigned idx) const; void push_back(const unsigned val); vector::size_type size() const; unsigned getCount() const; unsigned generate(); bool hasNext() const; void read(const string &fileName); void write(const string &fileName); private: void initIndex(const unsigned max); void initRand() const; friend ostream& operator<<(ostream& out, const Sample& s); friend istream& operator>>(istream& in, Sample& s); }; inline vector::const_iterator Sample::begin() const { return sample.begin(); } inline vector::const_iterator Sample::end() const { return sample.end(); } inline unsigned Sample::operator[](const unsigned idx) const { return sample[idx]; } inline vector::size_type Sample::size() const { return sample.size(); } inline vector::size_type Sample::getCount() const { return count; } inline bool Sample::hasNext() const { return index.size() != count; } #endif