如何遍历向量以生成新对象?
How can I iterate through a vector to generate new objects?
我已经从一个相对较大的 CSV 文件生成了一个矢量,并且需要从每一行中创建对象。问题是,有 102 列,所以手动编写对象参数是不可能的。
Data colNames;
for (int i = 0; i < 1; i++) {
for (int j = 0; j < content[i].size(); j++) {
string column = "col" + j;
colNames.column = content[i][j];
}
}
显然,我的语法是错误的,但尽管 google 搜索了很长时间,我还没有找到真正可以做到这一点的东西。
要创建的对象非常简单:每一列都有自己的值:
class Data
{
public:
string col0;
string col1;
string col2;
string col3;
string col4;
string col5;
string col6;
string col7;
string col8;
string col9;
string col10;
string col11;
string col12;
string col13;
string col14;
(...)
换句话说,对于 j = 0,需要更新 colNames.col0,依此类推。
我猜您想做的是使用带有 string
键的 std::map
。例如:
std::map<std::string, std::string> colNames;
for (size_t i = 0; i < 1; i++) {
for (size_t j = 0; j < content[i].size(); j++) {
std::string column = "col" + std::to_string(j);
colNames[column] = content[i][j];
}
}
你看过std::vector
了吗?
行是列的容器。要使用的容器是 std::vector
.
我们将使用两个结构:Data_Headers
和 Data_Rows
:
struct Data_Headers
{
std::vector<std::string> column_headers;
};
struct Data_Rows
{
std::vector</* data type */> column_data;
};
您可以通过以下方式访问该行的数据:
Data_Type column1_data = row.column_data[0];
我已经从一个相对较大的 CSV 文件生成了一个矢量,并且需要从每一行中创建对象。问题是,有 102 列,所以手动编写对象参数是不可能的。
Data colNames;
for (int i = 0; i < 1; i++) {
for (int j = 0; j < content[i].size(); j++) {
string column = "col" + j;
colNames.column = content[i][j];
}
}
显然,我的语法是错误的,但尽管 google 搜索了很长时间,我还没有找到真正可以做到这一点的东西。
要创建的对象非常简单:每一列都有自己的值:
class Data
{
public:
string col0;
string col1;
string col2;
string col3;
string col4;
string col5;
string col6;
string col7;
string col8;
string col9;
string col10;
string col11;
string col12;
string col13;
string col14;
(...)
换句话说,对于 j = 0,需要更新 colNames.col0,依此类推。
我猜您想做的是使用带有 string
键的 std::map
。例如:
std::map<std::string, std::string> colNames;
for (size_t i = 0; i < 1; i++) {
for (size_t j = 0; j < content[i].size(); j++) {
std::string column = "col" + std::to_string(j);
colNames[column] = content[i][j];
}
}
你看过std::vector
了吗?
行是列的容器。要使用的容器是 std::vector
.
我们将使用两个结构:Data_Headers
和 Data_Rows
:
struct Data_Headers
{
std::vector<std::string> column_headers;
};
struct Data_Rows
{
std::vector</* data type */> column_data;
};
您可以通过以下方式访问该行的数据:
Data_Type column1_data = row.column_data[0];