#include using namespace Upp; Vector GetStringData() { Vector data; int n = Random(100) * Random(100) * Random(10); for(int i = 0; i < n; i++) data.Add(AsString(Random(n))); return data; } Vector GetIntData() { Vector data; int n = Random(100) * Random(100) * Random(10); for(int i = 0; i < n; i++) data.Add(Random(n)); return data; } template void CheckSorted(C& data) { for(int i = 0; i < data.GetCount() - 1; i++) { if(!(data[i] <= data[i + 1])) { RDUMPC(data); RLOG("ERROR! " << i); Exit(1); } } } CONSOLE_APP_MAIN { StdLogSetup(LOG_FILE|LOG_COUT); for(;;) { Vector data = GetIntData(); LOG("int " << data.GetCount()); Sort(data); CheckSorted(data); Vector sdata = GetStringData(); LOG("String " << sdata.GetCount()); Sort(sdata); CheckSorted(sdata); { Vector data = GetIntData(); LOG("int " << data.GetCount()); StableSortCmp(data); CheckSorted(data); Vector sdata = GetStringData(); LOG("String " << sdata.GetCount()); StableSortCmp(sdata); CheckSorted(sdata); } } }