Имею подобный txt-файл . Для перенесения данных в два массива написал такой код:
vector<double> a;
vector<int> v;
double at;
int vt;
ifstream ff("var13.txt");
while (ff >> at >> vt)
{
a.push_back(at);
v.push_back(vt);
}
Однако мною было замечено, что если использовать для вывода цикл
for (auto i:a)
cout << a[i] << " " << v[i] << endl;
То на экран выведется такое содержимое:
14.078 10
14.078 10
13.29 7
и так далее, что является неверным.
В то же время, если использовать для вывода цикл
for(size_t i=0;i<a.size();i++)
cout<< a[i] <<" "<< v[i] <<endl;
То содержимое выведется верное. Не понятно, почему вывод получается неккоректным.
В своей программе я так же буду обращаться к элементам этих массивов, и теперь не понятно, могу ли я это делать переменными типа int, и придется ли их переводить в (size_t)
Прошу помощи в данном вопросе
Дело в том, что в:
for (auto i:a)
cout << a[i] << " " << v[i] << endl;
в i
записывается значение элементов вектора, и это равносильно, что написать:
for(size_t i=0;i<a.size();i++)
cout<< a[a[i]] <<" "<< v[a[i]] <<endl;
что наверняка не является вашим намерением, и вполне может привести к попытке вывода элемента за пределы вектора
Цикл for (auto i:a)
перебирает значения из массива a. Соответственно i имеет тип double и последовательно принимает значения: 14,602
14,227
13,619 ...
и так далее.
a[i] на первой итерации будет то же самое, что и a[14], то есть 14,078. Ну и так далее.
Рекомендую обращать внимание на warnings, наверняка там есть предупреждение, что в строке cout << a[i] << " " << v[i] << endl;
имеется сужающее преобразование из double в int.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня в файловой системе все данные хранятся в ОЗУЯ создал папку, в которую скопировал файл
Каким образом можно организовать отслеживание кнопок плей/пауза, громкость +/- блютуз гарнитуры? Заметил что в UWP приложениях отслеживание...
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме