Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » STL missmatch / sort macht Unsinn - oder ich?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.12.2008, 23:19 Uhr
mike
Pinguinhüpfer
(Operator)


Ah hoppla - RTFM
www.cplusplus.com/reference/algorithm/mismatch.html

Erste Liste darf nicht länger sein als die 2te - sonst hauts mismatch auf
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: