diff --git a/smp/src/topology/complete.cpp b/smp/src/topology/complete.cpp index 19cd2b4a5..aa019c628 100644 --- a/smp/src/topology/complete.cpp +++ b/smp/src/topology/complete.cpp @@ -32,15 +32,18 @@ Contact: paradiseo-help@lists.gforge.inria.fr void paradiseo::smp::Complete::operator()(unsigned nbNode, std::vector>& matrix) const { - matrix.clear(); + if(nbNode!=matrix.size()) + { + matrix.clear(); - matrix.resize(nbNode); - for(auto& line : matrix) - line.resize(nbNode); + matrix.resize(nbNode); + for(auto& line : matrix) + line.resize(nbNode); - std::vector line; - line.assign(nbNode,true); - matrix.assign(nbNode, line); - for(int i=0;i line; + line.assign(nbNode,true); + matrix.assign(nbNode, line); + for(int i=0;i>& matrix) const { - //Check if the number of node is coherent with an hypercube - assert((nbNode & (nbNode-1)) == 0); + if(nbNode!=matrix.size()) + { + //Check if the number of node is coherent with an hypercube + assert((nbNode & (nbNode-1)) == 0); - unsigned power=0,i,j; - while((nbNode & 1<>& matrix) const { - matrix.clear(); + if(nbNode!=matrix.size()) + { + matrix.clear(); - matrix.resize(nbNode); - for(auto& line : matrix) - line.resize(nbNode); + matrix.resize(nbNode); + for(auto& line : matrix) + line.resize(nbNode); - std::vector line; - line.assign(nbNode, false); - matrix.assign(nbNode, line); + std::vector line; + line.assign(nbNode, false); + matrix.assign(nbNode, line); - for(int i=0; i