У меня есть программа, в которой я беру csv-файл, разделяю строки и сохраняю их в vector<std::pair<string, float>>
В целом программа должна использовать алгоритм Дейкстры, но сейчас это не проблема.
Я создал свой собственный оператор печати, чтобы проверить, что правильные значения были помещены в соответствующее место. Но проблема в том, что индекс 0 сначала не имеет ничего, а второй - 0, а затем все остальное работает как обычно.
В своем заголовке я объявляю свой вектор следующим образом:
std::vector<std::pair<std::string, float>> curr_graph; //vector that hold a pair, string = currency name, int = bribe cost
В моем cpp-файле единственная используемая функция - это node_input () и моя функция печати
void graph::node_input()
{
//grabs first line of csv file (aka the nodes)
string s;
getline(cin, s);
for(int i = 0; i < s.length(); i++)
if(s[i] == ',') amount_of_nodes++;
std::stringstream ss(s);
string token;
while(getline(ss, token, ',')) //splits up the string by commas, ex: Dollar (1.2),Peso (6) will be split up
{
std::stringstream sss(token);
string split;
int counter = 0;
string temp;
float bribe = 0;
while(getline(sss, split, ' '))//splits up the newly split up string bu spaces, ex: Dollar (1.2) will be split up by the space
{
if(counter % 2 == 0)//this condition is when the string split is the currency
temp = split;
else //this condition will take to bribe cost and convert to a float
{
split.pop_back();//removes )
split.erase(0,1);//removes (
bribe = std::stof(split.c_str(), 0);//converts to float
}
counter++;
}
curr_graph.push_back(std::make_pair(temp, bribe));
}
//cout << curr_graph.size();
//cout << curr_graph.capacity();
//cout << endl << curr_graph.front() << endl;
print(curr_graph);
}
void graph::print(std::vector<std::pair<std::string, float>> &v)
{
for(int i = 0; i < v.size(); i++)
{
cout << v[i].first << " " << v[i].second << endl;
}
}
мой пример входного файла: (скомпилирован с использованием <) </p>
,Dollar (1.2),Peso (6),Pound (2),Euro (3),Franc (12)
Dollar (1.2),0,1.5,0,2.5,0
Peso (6),0,0,1.2,5.7,0
Pound (2),2,0,0,0,0
Euro (3),0.9,0,3,0,0
Franc (12),0,0,0,15,0
,,,,,
What is the shortest path from Pesos to Euros?,,,,,
и вот мой вывод, который я получаю из оператора print, который вызывается в моей функции node_input ():
0
Dollar 1.2
Peso 6
Pound 2
Euro 3
Franc 12