//! Construct a fast_discrete_assignment from a discrete_assignment fast_discrete_assignment(const discrete_assignment<MAX_DIM>& asg) : _num_vars(asg.args().num_vars()), _index(asg.linear_index()) { transposed = false; typename discrete_assignment<MAX_DIM>::const_iterator asg_it = asg.begin(); for (size_t i = 0; i < _num_vars; ++i) { _vars[i] = asg.args().var(i); _asgs[i] = asg_it[i]; } size_t multiple = 1; for (size_t i = 0;i < _num_vars; ++i) { _increment_step[i] = multiple; multiple *= _vars[i].size(); } }
//! Construct a fast_discrete_assignment from a discrete_assignment fast_discrete_assignment(const discrete_assignment<MAX_DIM>& asg) : _index(asg.linear_index()) { transposed = false; _num_vars = asg.args().num_vars(); for (size_t i = 0;i < _num_vars; ++i) { _vars[i] = asg.args().var(i); _asgs[i] = asg.asg_at(i); } size_t multiple = 1; for (size_t i = 0;i < _num_vars; ++i) { _increment_step[i] = multiple; multiple *= _vars[i].size(); } }