000
28.12.2008, 22:25 Uhr
mike
Pinguinhüpfer (Operator)
|
Hallo
Ich bin am verzweifeln Ich habe ein kleines Testprogramm. In subSort vergleicht das Programm plötzlich irgendwelche Werte - missmatch versagt ab und zu Valgrind spuckt irgendwas aus was ich nicht verstehe :-S
C++: |
#include <iostream> #include <vector> #include <algorithm> #include <iterator>
using namespace std;
bool subSort(vector<unsigned> const &a, vector<unsigned> const &b) { pair<vector<unsigned>::const_iterator, vector<unsigned>::const_iterator > elem; elem = mismatch(a.begin(), a.end(), b.begin()); if(elem.second == b.end()) return false; if(elem.first == a.end()) return true; if(*elem.first < *elem.second) return true; else return false; }
int main() { vector<unsigned> src; src.push_back(1); src.push_back(2); src.push_back(3); for(unsigned i=0; i < 10; i++) { src.push_back(5); src.push_back(6); src.push_back(7); } cout << "start build" << endl; vector<vector<unsigned> > vec; vec.resize(src.size());
vector<unsigned>::iterator srcit = src.begin(); for(size_t index = 0; index < src.size(); index++, srcit++) { vec[index].resize(distance(srcit, src.end())); copy(srcit, src.end(), vec.at(index).begin()); } cout << "end build" << endl; cout << "start sort" << endl; sort(vec.begin(), vec.end(), subSort); cout << "end sort" << endl; for(size_t i=0; i < vec.size(); i++) { for(size_t j=0; j < vec[i].size(); j++) cout << vec[i][j] << " "; cout << endl; } }
|
Die Sortierung funktioniert manchmal - in diesem Bsp z.b. nicht. Weiß jemand warum?
Danke im Voraus!!!! lg --
Dieser Post wurde am 28.12.2008 um 22:27 Uhr von mike editiert. |