【发布时间】:2020-05-29 15:05:48
【问题描述】:
我有一个名为 AI 的类,它有一个保存功能:
void save(string name) {
string fileName = "AIs/"+name+".AI";
ofstream mySave;
mySave.open(fileName);
mySave << "id\n" << id << "\n";
mySave << "pid\n" << pid << "\n";
mySave << "numInpNds\n" << numInpNds << "\n";
mySave << "numOutNds\n" << numOutNds << "\n";
mySave << "numLayers\n" << numLayers << "\n";
mySave << "layerSize\n";
for (int i = 0; i < numLayers; i++) {
mySave << layerSize[i] << "\n";
}
mySave << "inpLayer\n";
mySave << nurNet["inpLayer"]<<"\n";
for (int i = 0; i < numLayers; i++) {
mySave << "layer"+to_string(i+1)+"Weights\n";
mySave << nurNet["layer" + to_string(i + 1) + "Weights"] << "\n";
mySave << "layer" + to_string(i + 1) + "Biases\n";
mySave << nurNet["layer" + to_string(i + 1) + "Biases"] << "\n";
mySave << "layer" + to_string(i + 1) << "\n";
mySave << nurNet["layer" + to_string(i + 1)] << "\n";
}
mySave << "outLayerWeights\n";
mySave << nurNet["outLayerWeights"] << "\n";
mySave << "outLayerBiases\n";
mySave << nurNet["outLayerBiases"] << "\n";
mySave << "outLayer\n";
mySave << nurNet["outLayer"] << "\n";
mySave.close();
}
它们也是称为“AI”的 AI 向量。 我正在尝试遍历此向量并保存所有 AI:
for (int i = 0; i < settings["generationSize"]; i++) {;
AIs[i].save("AIs/" + to_string(i) + ".AI");
}
当我尝试运行我的代码时,它会输出此错误:
binary '[': no operator found 接受'std::vector' 类型的左操作数(或者没有 可接受的转换)
【问题讨论】:
-
对向量使用迭代器。在你的 for 循环中访问你的向量:AIs.begin() + i。但最好在 for 循环中指明 AIs.size(),因为设置中的大小可能不同,然后会出现运行时异常。
-
旁白:看起来您将保存名为“AIs/AIs/1.AI.AI”的文件