【发布时间】:2021-09-20 20:52:13
【问题描述】:
我正在尝试使用 1D_array 而不是 1D_vector 和 2D 数组而不是 2D 矢量来读取 .csv 文件的内容。下面是我使用向量读取 .csv 文件的代码,它可以正常工作。 但是我的教授要求我使用数组而不是向量来解决进一步的优化问题。我曾尝试使用数组,但仍然无法获得它。 有人可以帮忙吗?
//functoin to read dataset from .csv file.
bool read_data_set(string filename, vector<vector<int>>& vec_X_dataset, vector<int>& vec_Y_dataset) {
int field0, field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11,
field12, field13, field14, field15, field16, field17, field18, field19, field20, field21;
char comma;
string line;
ifstream myfile(filename);
if (myfile.is_open())
{
while (myfile
>> field0 >> comma
>> field1 >> comma
>> field2 >> comma
>> field3 >> comma
>> field4 >> comma
>> field5 >> comma
>> field6 >> comma
>> field7 >> comma
>> field8 >> comma
>> field9 >> comma
>> field10 >> comma
>> field11 >> comma
>> field12 >> comma
>> field13 >> comma
>> field14 >> comma
>> field15 >> comma
>> field16 >> comma
>> field17 >> comma
>> field18 >> comma
>> field19 >> comma
>> field20 >> comma
>> field21)
{
vector<int> inner_vec{ field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11,
field12, field13, field14, field15, field16, field17, field18, field19, field20 };
vec_X_dataset.push_back(inner_vec);
vec_Y_dataset.push_back(field21);
}
myfile.close();
}
else {
cout << "Unable to open file";
return true;
}
return false;
}
int main() {
cout << endl << "KNN K-Nearest-Neighbors in C++" << endl << endl;
cout << "please insert the value of K ";
cin >> k;
// Read dataset from file.
string filename = ".//Cleaned Covid Dataset.csv";
vector<vector<int>> vec_X_dataset{};
vector<int> vec_Y_dataset{};
bool error = read_data_set(filename, vec_X_dataset, vec_Y_dataset);
if (error) {
cout << "Exiting with error while reading dataset file " << filename << endl;
exit(-1);
}
bool read_data_set(string filename, int (&array_X_dataset)[5430][20], int (&array_Y_dataset)[5430]) { 整数字段0,字段1,字段2,字段3,字段4,字段5,字段6,字段7,字段8,字段9,字段10,字段11, 字段 12,字段 13,字段 14,字段 15,字段 16,字段 17,字段 18,字段 19,字段 20,字段 21; 字符逗号; 字符串线;
ifstream myfile(filename);
if (myfile.is_open())
{
while (myfile
>> field0 >> comma
>> field1 >> comma
>> field2 >> comma
>> field3 >> comma
>> field4 >> comma
>> field5 >> comma
>> field6 >> comma
>> field7 >> comma
>> field8 >> comma
>> field9 >> comma
>> field10 >> comma
>> field11 >> comma
>> field12 >> comma
>> field13 >> comma
>> field14 >> comma
>> field15 >> comma
>> field16 >> comma
>> field17 >> comma
>> field18 >> comma
>> field19 >> comma
>> field20 >> comma
>> field21)
{
/*vector<int> inner_vec{field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11,
field12, field13, field14, field15, field16, field17, field18, field19, field20 };
vec_X_dataset.push_back(inner_vec);
vec_Y_dataset.push_back(field21);*/
cout << field21 << endl;
for (size_t i = 0; i < 5430; i++)
{
array_Y_dataset[i] = field21;
}
}
for (size_t i = 0; i < 5430; i++)
{
cout<< i << " "<< array_Y_dataset[i] << endl;
}
myfile.close();
}
else {
cout << "Unable to open file";
return true;
}
return false;
}
【问题讨论】:
-
有什么问题?
-
我需要使用数组而不是向量从文件中读取数据,但是我不知道如何,如果您知道使用数组从文件中读取的方式,请您编辑我的代码跨度>
-
你试过用
array替换vector吗? -
尝试将
vector替换为array,看看你是否明白发生了什么。如果您有任何问题,请根据您遇到的问题来编辑此问题。 -
是的,我试过了,但它不起作用,因为数组在运行时无法改变它的大小