@@ -12,7 +12,11 @@ using namespace std;
12
12
13
13
CoinDynamicConflictGraph::CoinDynamicConflictGraph ( size_t _size ) :
14
14
CoinConflictGraph ( _size ),
15
+ #if __cplusplus >= 201103L
15
16
nodeConflicts ( vector< ConflictSetType >( _size, ConflictSetType( 2048 ) ) ),
17
+ #else
18
+ nodeConflicts ( vector< ConflictSetType >( _size ) ),
19
+ #endif
16
20
nodeCliques (std::vector< std::vector<size_t > >( _size )),
17
21
nDirectConflicts( _size ),
18
22
totalCliqueElements( 0 )
@@ -48,7 +52,7 @@ void CoinDynamicConflictGraph::addClique( size_t size, const size_t elements[] )
48
52
cliques.push_back ( CCCliqueType (elements, elements+size) );
49
53
50
54
// checking if elements are not sorted
51
- auto &clq = *cliques.rbegin ();
55
+ CCCliqueType &clq = *cliques.rbegin ();
52
56
bool sorted = true ;
53
57
for ( size_t i=0 ; i<clq.size ()-1 ; ++i ) {
54
58
if (clq[i] > clq[i+1 ]) {
@@ -69,7 +73,7 @@ bool CoinDynamicConflictGraph::conflicting ( size_t n1, size_t n2 ) const
69
73
if ( cIt != nodeConflicts[n1].end () )
70
74
return true ;
71
75
72
- const auto &nodeCliquesN1 = nodeCliques[n1];
76
+ const std::vector< size_t > &nodeCliquesN1 = nodeCliques[n1];
73
77
74
78
if (nodeCliquesN1.size ()==0 )
75
79
return false ;
@@ -127,7 +131,16 @@ CoinDynamicConflictGraph::CoinDynamicConflictGraph (
127
131
const char * sense,
128
132
const double * rowRHS,
129
133
const double * rowRange )
130
- : CoinDynamicConflictGraph( numCols*2 )
134
+ :
135
+ CoinConflictGraph ( numCols*2 ),
136
+ #if __cplusplus >= 201103L
137
+ nodeConflicts ( vector< ConflictSetType >( numCols*2 , ConflictSetType( 2048 ) ) ),
138
+ #else
139
+ nodeConflicts ( vector< ConflictSetType >( numCols*2 ) ),
140
+ #endif
141
+ nodeCliques (std::vector< std::vector<size_t > >( numCols*2 )),
142
+ nDirectConflicts( numCols*2 ),
143
+ totalCliqueElements( 0 )
131
144
{
132
145
newBounds_.clear ();
133
146
const int *idxs = matrixByRow->getIndices ();
@@ -453,18 +466,19 @@ void CoinDynamicConflictGraph::recomputeDegree()
453
466
nConflicts_ = 0 ;
454
467
455
468
for ( size_t i=0 ; (i<size_) ; ++i ) {
456
- const auto &nodeDirConf = nodeConflicts[i];
469
+ const ConflictSetType &nodeDirConf = nodeConflicts[i];
457
470
458
471
modified.clear ();
459
472
460
473
// setting iv for initial ements
461
474
modified.insert (modified.end (), nodeDirConf.begin (), nodeDirConf.end ());
462
475
modified.push_back ( i );
463
- for ( const auto &el : modified )
464
- iv[el ] = 1 ;
476
+ for ( vector< int >::const_iterator it = modified. begin (); it != modified. end (); ++it )
477
+ iv[*it ] = 1 ;
465
478
466
- for ( const auto &iclq : nodeCliques[i] ) {
467
- for ( const auto &el : cliques[iclq] ) {
479
+ for ( std::vector<size_t >::const_iterator it1 = nodeCliques[i].begin (); it1 != nodeCliques[i].end (); ++it1 ) {
480
+ for ( CCCliqueType::const_iterator it2 = cliques[*it1].begin (); it2 != cliques[*it1].end (); ++it2 ) {
481
+ size_t el = *it2;
468
482
if ( iv[el] == 0 ) {
469
483
iv[el] = 1 ;
470
484
modified.push_back (el);
@@ -474,8 +488,8 @@ void CoinDynamicConflictGraph::recomputeDegree()
474
488
475
489
degree_[i] = modified.size () - 1 ;
476
490
477
- for ( const auto &el : modified )
478
- iv[el ] = 0 ;
491
+ for ( vector< int >::const_iterator it = modified. begin (); it != modified. end (); ++it )
492
+ iv[*it ] = 0 ;
479
493
480
494
minDegree_ = min (minDegree_, degree_[i]);
481
495
maxDegree_ = max (maxDegree_, degree_[i]);
@@ -538,9 +552,17 @@ std::vector<std::string> CoinDynamicConflictGraph::differences(const CGraph* cgr
538
552
#endif
539
553
540
554
CoinDynamicConflictGraph::CoinDynamicConflictGraph ( const CoinStaticConflictGraph *cgraph, const size_t n, const size_t elements[] )
541
- : CoinDynamicConflictGraph( n )
555
+ : CoinConflictGraph ( n ),
556
+ #if __cplusplus >= 201103L
557
+ nodeConflicts ( vector< ConflictSetType >( n, ConflictSetType( 2048 ) ) ),
558
+ #else
559
+ nodeConflicts ( vector< ConflictSetType >( n ) ),
560
+ #endif
561
+ nodeCliques (std::vector< std::vector<size_t > >( n )),
562
+ nDirectConflicts( n ),
563
+ totalCliqueElements( 0 )
542
564
{
543
- const auto NOT_INCLUDED = numeric_limits<size_t >::max ();
565
+ const size_t NOT_INCLUDED = numeric_limits<size_t >::max ();
544
566
545
567
vector< size_t > newIdx ( cgraph->size (), NOT_INCLUDED );
546
568
@@ -552,9 +574,9 @@ CoinDynamicConflictGraph::CoinDynamicConflictGraph( const CoinStaticConflictGrap
552
574
553
575
// direct neighbors in static cgraph
554
576
for ( size_t i=0 ; (i<n) ; ++i ) {
555
- const auto nidx = elements[i];
556
- const auto *neighs = cgraph->nodeNeighs ( nidx );
557
- const auto nNeighs = cgraph->nConflictsNode [ nidx ];
577
+ const size_t nidx = elements[i];
578
+ const size_t *neighs = cgraph->nodeNeighs ( nidx );
579
+ const size_t nNeighs = cgraph->nConflictsNode [ nidx ];
558
580
559
581
realNeighs.clear ();
560
582
for ( size_t j=0 ; (j<nNeighs) ; ++j )
@@ -586,12 +608,12 @@ CoinDynamicConflictGraph::CoinDynamicConflictGraph( const CoinStaticConflictGrap
586
608
587
609
std::pair< size_t , const size_t * > CoinDynamicConflictGraph::conflictingNodes ( size_t node, size_t * temp ) const
588
610
{
589
- const auto &nodeCliquesNode = nodeCliques[node];
590
- const auto &nconf = nodeConflicts[node];
611
+ const std::vector< size_t > &nodeCliquesNode = nodeCliques[node];
612
+ const ConflictSetType &nconf = nodeConflicts[node];
591
613
if (nodeCliquesNode.size ()==0 ) {
592
614
size_t i=0 ;
593
- for ( const auto &n : nconf )
594
- temp[i++] = n ;
615
+ for ( ConflictSetType::const_iterator it = nconf. begin (); it != nconf. begin (); ++it )
616
+ temp[i++] = *it ;
595
617
596
618
return pair< size_t , const size_t * >(nconf.size (), temp);
597
619
}
@@ -604,16 +626,16 @@ std::pair< size_t, const size_t* > CoinDynamicConflictGraph::conflictingNodes (
604
626
for ( vector< size_t >::const_iterator
605
627
vit = nodeCliquesNode.begin () ; vit != nodeCliquesNode.end () ; ++ vit )
606
628
{
607
- const auto &s = cliques[*vit];
608
- for ( const auto &n : s )
609
- if (n != node)
610
- res.insert (n );
629
+ const CCCliqueType &s = cliques[*vit];
630
+ for ( CCCliqueType::const_iterator it = s. begin (); it != s. end (); ++it )
631
+ if (*it != node)
632
+ res.insert (*it );
611
633
}
612
634
613
635
// copying final result
614
636
size_t i=0 ;
615
- for ( const auto &n : res )
616
- temp[i++] = n ;
637
+ for ( ConflictSetType::const_iterator it = res. begin (); it != res. end (); ++it )
638
+ temp[i++] = *it ;
617
639
618
640
return pair< size_t , const size_t * >(res.size (), temp);
619
641
}
@@ -623,7 +645,7 @@ std::pair< size_t, const size_t* > CoinDynamicConflictGraph::conflictingNodes (
623
645
624
646
bool CoinDynamicConflictGraph::elementInClique ( size_t idxClique, size_t node ) const
625
647
{
626
- const auto &clique = cliques[idxClique];
648
+ const CCCliqueType &clique = cliques[idxClique];
627
649
628
650
return std::binary_search (clique.begin (), clique.end (), node);
629
651
}
0 commit comments