Well I initialize everything in a constructor including vector sizes being set to 1, to prevent undefined behavior. So the first time I add a texture then the Image vector data position 0 is empty so I just load the image. The second time I call it I need to expand and then load and bind textures..
Maybe code would be more clear than words subject to interpretation:
void TextureManager::AddTexture(std::string FileName){
if(Birthing)
Birthing = false;
else
Expand();
int x = NumberOfTextures-1;
Textures[x].LoadFromFile(FileName);
glGenTextures(1, &TextureID[x]);
glBindTexture(GL_TEXTURE_2D, TextureID[x]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Textures[x].GetWidth(), Textures[x].GetHeight(),
0, GL_RGBA, GL_UNSIGNED_BYTE, Textures[x].GetPixelsPtr());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}