我在读取文件并将其保存回 2D 矢量时遇到问题。这是写入文件的函数:
void create_input (int num_frames, int height, int width)
{
ofstream GridFlow;
GridFlow.open ("GridDB");
for (int i = 0; i < num_frames; i++)
{
for (int j = 0; j < height; j++)
{
for (int k = 0; k < width; k++)
{
GridFlow << setw(5);
GridFlow << rand() % 256 << endl;
}
}
}
GridFlow.close();
}
这只是为每行(高度 * 宽度 * num_frames)次数写入一个随机数。像这样:
3
74
160
78
15
30
127
64
178
15
107
我想要做的是从文件中读回并将文件的不同块(宽度*高度)保存在不同的帧中。我试过这样做,但程序阻塞没有任何错误:
vector<Frame> movie;
movie.resize(num_frames);
for (int i = 0; i < num_frames; i++)
{
Frame frame;
int offset = i*width*height*6;
vector<vector<int>>tmp_grid(height, vector<int>(width, 0));
ifstream GridFlow;
GridFlow.open ("GridDB");
GridFlow.seekg(offset, GridFlow.beg);
for (int h = 0; h < height; h++)
{
for (int g = 0; g < width; g++)
{
int value;
GridFlow >> value;
tmp_grid[h][g] = value;
}
}
frame.grid = tmp_grid;
movie[i] = frame;
}
我使用了一个偏移量,每次乘以 6(字节数 * 行)开始读取,结构 Frame 只是一个 2D 向量来存储值。我必须使用偏移量来执行此操作,因为下一步将执行此多线程,每个知道帧数的线程都应该计算正确的偏移量以开始读取和存储。