Ik heb een programma geschreven die pixels (van een BMP) in een list inlaadt namelijk in de volgende lijst:
Vervolgens wordt deze lijst gesorteerd m.b.h.v. het ingebouwde sort() functie:
Echter dan gebeurd er iets raars, er "verdwijnen" elementen uit deze lijst??? Het lijkt mij stug dat sort() elementen verwijderd? Die hoort toch enkel te sorteren.
Toch is dit zo want:
geeft als output:
Nu lijkt mij dit erg raar, en het is ook erg lastig omdat daarna die lijst niet meer weggeschreven kan worden zoals het moet immers ze is kleiner geworden wat zorgt voor memory leaks.
Ik heb zelf een lijst (een template) geschreven met dezelfde mogelijkheden (push, pop, sort etc...) en daar werkt dat wel mee. Nu wou ik ook de STL-faciliteiten gebruiken i.p.v. mijn eigen template en dat werkt niet???
Ik zou dus erg graag weten wat ik fout doe hier.
code:
1
| std::list<Pixel> lijst_van_pixels; |
Vervolgens wordt deze lijst gesorteerd m.b.h.v. het ingebouwde sort() functie:
code:
1
| lijst_van_pixels.sort(); |
Echter dan gebeurd er iets raars, er "verdwijnen" elementen uit deze lijst??? Het lijkt mij stug dat sort() elementen verwijderd? Die hoort toch enkel te sorteren.
Toch is dit zo want:
code:
1
2
3
| std::cout << lijst_van_pixels.size() << endl; //DEBUG
lijst_van_pixels.sort();
std::cout << lijst_van_pixels.size() << endl; //DEBUG |
geeft als output:
code:
1
2
| 156332 25260 |
Nu lijkt mij dit erg raar, en het is ook erg lastig omdat daarna die lijst niet meer weggeschreven kan worden zoals het moet immers ze is kleiner geworden wat zorgt voor memory leaks.
Ik heb zelf een lijst (een template) geschreven met dezelfde mogelijkheden (push, pop, sort etc...) en daar werkt dat wel mee. Nu wou ik ook de STL-faciliteiten gebruiken i.p.v. mijn eigen template en dat werkt niet???
Ik zou dus erg graag weten wat ik fout doe hier.