@jlb, It's not really "empty". It's just initialized to all zeroes. It still has a total of rows*cols elements in use (i.e., stuff.size()==rows and stuff[0 to rows-1].size()==cols).
Your vector stuff is local to the grid function. When you exit grid(), stuff goes out of scope and goes away. So, how do you know whether or not the grid is created or not?