#include #include "sm_array.h" garray::garray(): size(0) {}; bool garray::add(string name) { if(name == "") { throw string("cannot add empty string"); } if((not contains(name)) and size < MAX_DATA_SIZE) { data[size] = name; size++; return true; } else { return false; } } bool garray::contains(string name) { for(int i = 0; i < size; i++) { if(name == data[i]) return true; } return false; } bool garray::remove(string name) { bool reduce = false; if(contains(name)) { reduce = true; } else { return reduce; } garray tmp; for(int i = 0; i < size; i++) { if(data[i] != name) { tmp.add(data[i]); } } for(int i = 0; i < MAX_DATA_SIZE; i++) { data[i] = tmp.data[i]; } if(reduce) size--; return reduce; } void garray::randomize() { random_shuffle(&data[0], &data[size]); } ostream & operator<<(ostream & os, garray & g) { os << "["; for(int i = 0; i < g.size; i++) { os << i << "-" << g.data[i]; if (i != g.size - 1) { os << ", "; } } os << "]"; return os; }