私は 3D ベクトルを扱っていましたが、すべてが完璧に機能しました。ofstream ファイルを追加して操作すると、Segmentation Fault が表示されました。問題がまったくわかりません。次のコードは機能しません。
#include <iostream>
#include <vector>
#include <fstream>
std::vector < std::vector < std::vector <float> > > hand;
int main(){
//First Part
std::ofstream file;
file.open("test.csv");
file << "Hello World!";
file.close();
//Second Part
hand.reserve(20);
for (int i=0; i<hand.capacity(); i++){
hand[i].reserve(4);
}
return 0;
}
パーツの 1 つにコメントを付けると、コードは完全に機能します。これらを同時に操作しようとすると、セグメンテーション違反が発生します。
次の代わりに、コードが機能することに注意することも重要です。
hand.reserve(20);
8 未満の数値を使用します。
hand.reserve(7); //or lower
私の質問は: 同時に使用するとコードが機能しないのはなぜですか? 修正するにはどうすればよいですか? この特定のケースについて説明はありますか?
これをもっと大きなコードに実装する必要があるので、根本的な原因を知り、次のケースではそれを回避することをお勧めします。