Hey guys.
Jeg har skrevet et program som skal sortere cpr numre fra en tekst fil og udskrive dem til en fil. (dette skal gøres ved hhv. en vector, list og map).
Men her skal jeg så bruge ctime til at fortælle mig hvor lang tid der tager at sortere og skrive til en fil. (filen med cpr numre, indeholder 20 mio. cpr numre, dvs er stor).
Er der nogen der kan fortælle mig hvordan jeg kan bruge ctime i mit projekt og hvor jeg skal skrive den henne i projektet?
på forhånd tak.
Her er koden hvor main er:
#include <iostream>
#include <vector>
#include <list>
#include <map>
#include <string>
#include <fstream>
#include <stdexcept>
#include <algorithm> // sort
#include "Indhold.h"
using namespace std;
void IndlaesFil(std::vector<Indhold>& container);
void IndlaesFil(std::list<Indhold>& container);
// void IndlaesFil(std::map<Indhold, int>& container);
bool compare(const Indhold& x, const Indhold& y);
void udskrivFil(vector<Indhold>& container);
void udskrivFil(list<Indhold>& container);
int main()
{
vector<Indhold> IndholdV;
list<Indhold> IndholdL;
map<Indhold, int> IndholdM;
char kommando = '0';
do
{
cout << " Velkommen til kinesere sortering ;)\n" << endl;
cout << " Indtast dit valg og afslut/enter" << endl;
cout << " Tast 1 for at sortere i 'vector'. " << endl;
cout << " Tast 2 for at sortere i 'List'. " << endl;
cout << " Tast 3 for at sortere i 'map'. " << endl;
cout << " Tast 0 for at afslutte. " << endl;
cin >> kommando;
switch (kommando)
{
case '1':
IndlaesFil(IndholdV);
sort(IndholdV.begin(), IndholdV.end(), compare);
udskrivFil(IndholdV);
break;
case '2':
IndlaesFil(IndholdL);
IndholdL.sort(compare);
udskrivFil(IndholdL);
break;
default: cin.clear();
}
}
while(tolower(kommando) !='0');
return 0;
}
bool compare(const Indhold& x, const Indhold& y)
{
return x.tilSort() < y.tilSort();
}
void IndlaesFil(vector<Indhold>& container)
{
std::string eenLinie;
std::ifstream fstreamInd("Kina100k.txt");
if(!fstreamInd) // Hvis filen ikke findes
{
cout << "Kan ikke aabne kildefilden!" << endl;
} else {
while (getline(fstreamInd, eenLinie))
{
try
{
Indhold eenKineser(eenLinie);
container.push_back(eenKineser);
// cout << container.size();
} catch(domain_error e)
{
// throw t.what
cout << "Fejl ved indlaesning af data: " << endl;
cout << e.what();
cout << endl;
}
}
fstreamInd.close();
}
cout << container.size();
}
void IndlaesFil(list<Indhold>& container)
{
std::string eenLinie;
std::ifstream fstreamInd("Kina100k.txt");
if(!fstreamInd) // Hvis filen ikke findes
{
cout << "Kan ikke aabne kildefilden!" << endl;
} else {
while (getline(fstreamInd, eenLinie))
{
try
{
Indhold eenKineser(eenLinie);
container.push_back(eenKineser);
// cout << container.size();
} catch(domain_error e)
{
// throw t.what
cout << "Fejl ved indlaesning af data: " << endl;
cout << e.what();
cout << endl;
}
}
fstreamInd.close();
}
cout << container.size() << endl;
}
void udskrivFil(vector<Indhold>& container)
{
std::ofstream myStreamOut("vector.txt");
if(!myStreamOut) // Hvis filen ikke findes eller kan oprettes
{
std::cout << "Kan ikke åbne fil.\n";
// Her burde være en return ikke nul, men funktionen er void
}
else
{
vector<Indhold>::const_iterator it;
for (it=container.begin(); it != container.end(); it++ )
{
myStreamOut << it->Ud() << endl;
}
myStreamOut << "Vector size: " << std::fixed << container.size() << endl;
myStreamOut.close();
}
}
void udskrivFil(list<Indhold>& container)
{
std::ofstream myStreamOut("List.txt");
if(!myStreamOut) // Hvis filen ikke findes eller kan oprettes
{
std::cout << "Kan ikke åbne fil.\n";
// Her burde være en return ikke nul, men funktionen er void
}
else
{
list<Indhold>::const_iterator it;
for (it=container.begin(); it != container.end(); it++ )
{
myStreamOut << it->Ud() << endl;
}
myStreamOut << "List size: " << std::fixed << container.size() << endl;
myStreamOut.close();
}
}
er det nødvendingt at oplyse header filer osv?