Re: STL container question
Ioannis Vranos wrote:
The program had a serious bug.
corrected:
#include <iostream>
#include <ctime>
#include <vector>
#include <list>
#include <cstddef>
#include <algorithm>
class SomeClass
{
typedef std::vector<int> TypeVector;
TypeVector vec;
enum { VectorSize= 1000 };
public:
SomeClass();
bool operator<(const SomeClass &argSomeClass) const
{
return vec[0]< argSomeClass.vec[0];
}
};
int main()
{
using namespace std;
srand(time(0));
const size_t SIZE=10000;
typedef vector<SomeClass> Vector;
typedef list<SomeClass> List;
cout<< "\nCreating vector with "<< SIZE<< " elements..."<< flush;
Vector vec(SIZE);
cout<<" Done!\n\n"<< flush;
===> List lis;
cout<< "Filling list with vector elements..."<< flush;
for(Vector::size_type i= 0; i< vec.size(); ++i)
lis.push_back(vec[i]);
cout<< " Done!\n\n"<< flush;
clock_t timeBeginVector, timeEndVector, timeBeginList, timeEndList;
cout<< "Timing the sorting of the vector..."<< flush;
timeBeginVector= clock();
sort(vec.begin(), vec.end());
timeEndVector= clock();
cout<< " Done!\n\n"<< flush;
cout<< "Timing the sorting of the list..."<< flush;
timeBeginList= clock();
lis.sort();
timeEndList= clock();
cout<< " Done!\n\n"<< flush;
cout<< "The sorting of the vector took "
<< static_cast<double>((timeEndVector- timeBeginVector))/
CLOCKS_PER_SEC
<< " seconds\n\n";
cout<< "The sorting of the list took "
<< static_cast<double>((timeEndList- timeBeginList))/
CLOCKS_PER_SEC
<< " seconds\n\n";
}
SomeClass::SomeClass():vec(VectorSize)
{
using namespace std;
for(TypeVector::size_type i= 0; i< vec.size(); ++i)
vec[i]= rand();
sort(vec.begin(), vec.end());
}
And my results:
1. const size_t SIZE= 90000;
john@john-desktop:~/Projects/src$ ./foobar_cpp
Creating vector with 90000 elements... Done!
Filling list with vector elements... Done!
Timing the sorting of the vector... Done!
Timing the sorting of the list... Done!
The sorting of the vector took 24.79 seconds
The sorting of the list took 0.1 seconds
john@john-desktop:~/Projects/src$
2. const size_t SIZE= 100000;
john@john-desktop:~/Projects/src$ ./foobar_cpp
Creating vector with 100000 elements... Done!
Filling list with vector elements... Done!
Timing the sorting of the vector... Done!
Timing the sorting of the list... Done!
The sorting of the vector took 26.8 seconds
The sorting of the list took 0.1 seconds
john@john-desktop:~/Projects/src$