2016-07-16 8 views
0
void customsort() 
{ 
    int a = 0; 
    int b = 0; 
    vector<pair<int, int> >::const_iterator it1,it2; 
    for(it1 = temp.begin();it1<temp.end();it1++) 
     for(it2 = temp.begin()+1;it2<temp.end();it2++) 
      { 
       a = it1->first+it1->second; 
       b = it2->first+it2->second;  
       if(a>b) 
       { 
        swap(it1->first, it2->first); 
        swap(it1->second, it2->second); 
       } 
      } 
} 

Dies ist der CodeFehler: Zuweisung von Nur-Lese-Referenz ‚__B‘

was ich versuche Swap zu tun ist, ein gekoppeltes Vektor

zum Beispiel

sagen, dass ich eine haben [1,1], [1,2], [2,0], [3,2]

ich mag sie sortieren basierend auf ihrer Summe (aufsteigende Reihenfolge)

ABER Ich erhalte einen Fehler

In file included from /usr/include/c++/4.8/bits/stl_pair.h:59:0, 
       from /usr/include/c++/4.8/bits/stl_algobase.h:64, 
       from /usr/include/c++/4.8/bits/char_traits.h:39, 
       from /usr/include/c++/4.8/ios:40, 
       from /usr/include/c++/4.8/ostream:38, 
       from /usr/include/c++/4.8/iostream:39, 
       from prog1.cpp:1: 
/usr/include/c++/4.8/bits/move.h: In instantiation of ‘void std::swap(_Tp&, _Tp&) [with _Tp = const int]’: 
prog1.cpp:23:34: required from here 
/usr/include/c++/4.8/bits/move.h:176:11: error: assignment of read-only reference ‘__a’ 
     __a = _GLIBCXX_MOVE(__b); 
     ^
/usr/include/c++/4.8/bits/move.h:177:11: error: assignment of read-only reference ‘__b’ 
     __b = _GLIBCXX_MOVE(__tmp); 

Vielen Dank im Voraus

Antwort

0

Verwenden Sie ein iterator anstelle ein const_iterator für Variablen it1 und it2.

Es ist nicht möglich, die Werte mit const_iterator zu ändern (und swap möchte die Werte ändern), deshalb erhalten Sie einen Fehler.

0

Die Fehlermeldung lautet:

In instantiation of ‘void std::swap(_Tp&, _Tp&) [with _Tp = const int]’: 

das heißt, es denkt, dass Sie versuchen, zwei const int s zu tauschen, was nicht möglich ist. Der Grund, warum die int s sind const ist, dass Sie eine const_iterator anstelle von iterator verwenden.

Verwandte Themen