我正在从文件中读取矩阵,我正在将其读入字符串向量,因此我可以保留文件中的前导0。现在我想对向量应用一些数学运算,所以我想将它复制到2D int向量中。我是新手使用矢量,我看到有一些1D矢量的例子,但我对2D矢量感到困惑。
std::vector< std::vector<string> > data;
std::vector< std::vector<int> > res;
std::ifstream f("input.txt", ios::binary);
std::string line;
while(std::getline(f,line))
{
std::vector<string> line_data;
std::istringstream iss(line);
std::string value;
while(iss >> value)
{
line_data.push_back(value);
}
data.push_back(line_data);
}
我上面的代码逐行读取文件,并将其写入名为data的2D字符串向量。我的目标是将2D数据向量复制到2D res向量,我该如何处理?
input.txt是一个方形布尔矩阵。 例如
0101
1010
1100
0001
编辑:
根据推荐,我尝试使用转换功能,这就是我所要做的:
for (unsigned int i = 0; i < data.size(); ++i)
{ std::vector<int> temp_data;
std::transform(data[i].begin(), data[i].end(),
std::back_inserter(temp_data),
[](const auto& element) { return std::stoi(element); });
res.push_back(temp_data);
}
但是我在这里无效使用自动错误,我甚至不确定这是否适用于2D矢量。
答案 0 :(得分:3)
一个简单的解决方案是使用std::transform和一个调用std::stoi的lambda。
以下是一个例子:
class SettingManage {
fun addSetting(mMSetting:MSetting){
DBSettingManage().addDBSetting(DbDataMapper().convertMSetting_To_DBSetting(mMSetting))
}
}
class DBSettingManage(private val mDBSettingHelper: DBSettingHelper =DBSettingHelper.instance) {
fun addDBSetting(mDBSetting: DBSetting)=mDBSettingHelper.use{
insert(DBSettingTable.TableNAME,*mDBSetting.mMutableMap.toVarargArray())
}
}
class DbDataMapper {
fun convertMSetting_To_DBSetting(mMSetting: MSetting) =with(mMSetting){
DBSetting(_id,name,createdDate,description)
}
fun convertDBSetting_To_MSetting(mDBSetting: DBSetting)=with(mDBSetting){
MSetting(_id,name,createdDate,description )
}
}
fun <T : Any> SelectQueryBuilder.parseList(parser: (Map<String, Any?>) -> T): List<T> =
parseList(object : MapRowParser<T> {
override fun parseRow(columns: Map<String, Any?>): T = parser(columns)
})