The function you are calling:
void Image::create (unsigned int width, unsigned int height, const Uint8 *pixels);
only accepts a pointer to the data, which is why your code doesn't compile. If you want to use std::vector, you'll either have to:
(a) copy all the data into an array, or
(b) try the following code
std::vector<sf::Uint8> pixels;
sf::Image image;
image.create(sizeX, sizeY, pixels.data());
Option (b) will only work with the very latest compilers, so I'd recommend option (a). i.e.,
std::vector<sf::Uint8> pixels;
// fill pixels...
sf::Uint8* dat = new sf::Uint8[pixels.size()];
std::copy(pixels.begin(), pixels.end(), dat); // copy them somehow..
sf::Image image;
image.create(sizeX, sizeY, dat);
delete[]dat;