Если я правильно понимаю, конструкция во вложении цикле
fill(......
заполняет всю строку заданным значением. Вот ее и надо заменить на заполнение столбца. Наверное, понадобится еще один вложенный цикл,, чтобы пройти по всем строкам, и записать в заданную ячейку значение.
Должно получиться что-то типа такого:
vector> make_gradient(int height, int width)
{
assert(height > 0 && width > 0);
int cf = width / 255;
int color = 0;
vector> result(height, vector(width));
for (int i = 0; i < height ; i += cf)
{
for (int j = 0; j < cf; ++j)
{
for (Int z =0, z < width, z++)
{
result[z][i+j] = color % 255:
}
}
color++;
}
stable_sort(result.begin(), result.end());
return result;
}
int main(int argc, char *argv[])
{
ofstream file;
file.open(argv[1]);
if (!file)
{
cout << "can't open file" << endl;
return 0;
}
file << "P5" << "\n";
file << numrows << " " << numcols << "\n";
file << 255 << "\n";
vector> pixmap;
for_each(pixmap.begin(), pixmap.end(), [&](const auto& v) {
copy(v.begin(), v.end(), ostream_iterator{file, ""});
});
file.close();
}
Надеюсь, нигде не ошибся с координатами :)