Ahoj lidi, měl bych prosbu. Dokázal by mi někdo poradit, jak se správně vypořádat s těma vectorama? Potřebuju vytvořit prográmek, kterej nahraje soubor, který je v nějakém podobné tvaru jako tohle:
#TIME_COST
0.6665
#NODES_FRAME
1233
#FRAMES
1
#TIME_COST
0.966
#NODES_FRAME
1310
#FRAMES
2
#TIME_COST
0.62336
#NODES_FRAME
1697
#FRAMES
3
#TIME_COST
0.6005
#NODES_FRAME
1793
#FRAMES
4
A já bych potřeboval, aby výstup byl podle parametrů například tento:
#TIME
3211
3465
3499
1036
6904
Samozřejmě parametrů i hodnot je tam na tisíce řádků.
Zatím sem sesmolil tohle, nicméně mi to píše, že vector není incializován. Prostě netuším jak na to.
Potřebuju aby se ty řádky nahrávali do vytvořených structur parametrů, kde je název, pole hodnot a další věci jako průměr, maximum, minimum apod.
Nevíte někdo prosím, kde dělám chybu?
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <stdio.h>
#include <vector>
using namespace std;
struct ParStruct
{
string name;
vector<double> value;
double average;
double min;
double max;
double median;
};
void WriteParameter(ParStruct Parameter, int SizeOfValueArr)
{
cout << Parameter.name << endl;
for (int i = 0; i < SizeOfValueArr; i++) {
cout << Parameter.value[i] << endl;;
}
}
int main(int argc, char *argv[])
{
vector <ParStruct> Parameter;
int LogNumber, LineNumber = 1, optionnumber;
ifstream LogFile;
double ParValue;
string MemoryLog, options, fileline;
string LogFilePath;
cout << "Path: ";
getline(cin, LogFilePath);
LogFile.open(LogFilePath);
while (LogFile.good()) {
while ((getline(LogFile, fileline)) && !(LogFile.eof())) {
if (fileline[0] == '#') { //Parameter
MemoryLog = fileline;
for (int i = 0; i <= Parameter.size(); i++) {
if ((fileline != Parameter[i].name) && Parameter[i].name.size() < 2) {
Parameter[i].name = fileline;
}
}
}
else {
istringstream Number(fileline);
Number >> ParValue;
for (int i = 0; i < Parameter.size(); i++) {
if (Parameter[i].name == MemoryLog) {
for (int m = 0; m < Parameter[i].value.size(); m++) {
if (Parameter[i].value[m] <= 0) {
Parameter[i].value[m] = ParValue;
}
}
}
}
}
}
}
for (int i = 0; i <= Parameter.size(); i++) {
WriteParameter(Parameter[i], Parameter[i].value.size());
}
LogFile.close();
return 0;
}