I aus dem folgenden Beispielcode (kompiliert mit -std = C++ 11)write '3D' Vektor pod Typ Binärdatei C++
Es ist ein 3D-Vektor 10 * 20 * 30 mit der Zahl 8 gefüllt überall . Ich kann nicht herausfinden, wie man es auf die Festplatte schreibt und es zurück liest. Kann mir jemand sagen, wie bitte oder vervollständige ich die r-rw Routinen?
#include <iostream>
#include <vector>
#include <fstream>
int main(int argc, char *argv[])
{
//'3d' vector filled with 8's
std::vector<std::vector<std::vector<int>>> all8s (10,std::vector<std::vector<int>>(20,std::vector <int>(30,8)));;
//print the whole
std::cout << "1st size " << all8s.size() << " \n";
for (auto& elemTop : all8s) {
std::cout << "2nd size " << elemTop.size() << " \n";
for (auto& elemMiddle : elemTop) {
std::cout << "3th size " << elemMiddle.size() << " \n";
for (auto& elemBottom : elemMiddle){
std::cout << elemBottom << ",";
}
std::cout << "\n";
}
}
//write binary file
std::ofstream out("all8s.bin", std::ios::out | std::ios::binary);
//how do I write this to disk
out.close();
//read it?
std::vector<std::vector<std::vector<int>>> all8sReloaded;
std::ifstream in("all8s.bin", std::ios::in | std::ios::binary);
//how to read it back?
in.close();
}
Sie tun dies, indem Sie jeden Vektor jedes Vektors des * Vektors * einzeln nacheinander schreiben/lesen. Oder, Sie sichern all dies, verwenden Sie einfach einen 'std :: vector' von Anfang an und machen Sie den tiefgestellten Mathe selbst, wo auch immer es verwendet wird. –
WhozCraig
Allgemeine Konvention ist, dass Sie 'auto const &' verwenden sollten, wenn Sie die Elemente nicht ändern. –