void Set :: computeIntArray(IntArray& answer, const IntArray& specified, std::list< Range > ranges) { // Find the max value; int maxIndex = specified.giveSize() == 0 ? 0 : specified.maximum(); for (std::list< Range >::iterator it = ranges.begin(); it != ranges.end(); ++it) { if ( it->giveEnd() > maxIndex ) maxIndex = it->giveEnd(); } IntArray afflictedNodes(maxIndex); afflictedNodes.zero(); for (int i = 1; i <= specified.giveSize(); ++i) { afflictedNodes.at(specified.at(i)) = 1; } for (std::list< Range >::iterator it = ranges.begin(); it != ranges.end(); ++it) { for (int i = it->giveStart(); i <= it->giveEnd(); ++i) { afflictedNodes.at(i) = 1; } } answer.findNonzeros(afflictedNodes); }
void Set :: computeIntArray(IntArray &answer, const IntArray &specified, std :: list< Range >ranges) { // Find the max value; int maxIndex = specified.giveSize() == 0 ? 0 : specified.maximum(); for ( auto &range: ranges ) { if ( range.giveEnd() > maxIndex ) { maxIndex = range.giveEnd(); } } IntArray afflictedNodes(maxIndex); afflictedNodes.zero(); for ( int i = 1; i <= specified.giveSize(); ++i ) { afflictedNodes.at( specified.at(i) ) = 1; } for ( auto &range: ranges ) { for ( int i = range.giveStart(); i <= range.giveEnd(); ++i ) { afflictedNodes.at(i) = 1; } } answer.findNonzeros(afflictedNodes); }