22 template<
typename DataType>
26 std::vector<std::shared_ptr<DataType> > _set;
28 std::vector<int> _pattern;
32 typedef DataType value_type;
35 SplitSet(
const std::vector<int> &pattern);
65 void push_back(DataType*
set)
67 _set.push_back(std::shared_ptr<DataType>(
set));
95 pattern(
const std::vector<int> &new_pattern)
101 template<
typename SplitSetType>
102 friend std::ostream& operator<< (std::ostream &out, const SplitSet<SplitSetType> &seqSet);
108 template<
typename SplitSetType>
109 std::ostream& operator<< (std::ostream &out, const SplitSet<SplitSetType> &seqSet)
111 size_t n_sets=seqSet.size();
112 size_t n_seqs = seqSet[0].size();
113 for (
size_t j=0; j<n_seqs; ++j)
115 for (
size_t i=0; i<n_sets; ++i)
117 out <<
" " << seqSet[i][j].sequence();
125 template<
typename DataType>
126 SplitSet<DataType>::SplitSet():_set(), _id(-1), _pattern()
132 template<
typename DataType>
133 SplitSet<DataType>::SplitSet(
const std::vector<int> &pattern):_set(), _id(-1), _pattern(pattern)
135 size_t n_pieces=_pattern.size()*2+1;
136 _set.reserve(n_pieces);
137 for (
size_t i=0; i<n_pieces; ++i)
138 _set.push_back(std::shared_ptr<DataType>(
new DataType()));
141 template<
typename DataType>
142 SplitSet<DataType>::~SplitSet()