示例#1
0
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);
}
示例#2
0
文件: set.C 项目: Micket/oofem
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);
}