Так что я столкнулся с проблемой std :: vector в vc ++.В g ++ это работает нормально, однако в vc ++ после вставки 6 элементов и вызова конструктора емкость имеет значение более 1000000000, и shrink_to_fit () вылетает из моей программы.Я не знаю, что вызывает это, но я собираюсь опубликовать код для причины:
Этот код инициализирует вектор:
std::vector<unsigned> indices_rect {
0, 1, 2,
2, 3, 0
};
Затем вызывается эта статическая функция,он устанавливает строку для пути по умолчанию:
engine::Texture::set_default_texture("../res/textures/engine/default_texture.jpg", engine::ImageType::JPG);
После этого емкость indices_rect по-прежнему равна 6, как и размер.Но сразу же, как я прыгаю в конструктор для "Shaderfile", перед выполнением первой строки емкость устанавливается в указанное большое число.Это происходит в следующей строке.
engine::Shaderfile textured("../res/shaders/engine/textured.glsl", indices_rect);
Я передал вектор, чтобы посмотреть, что происходит внутри конструктора.Начало выглядит так:
Shaderfile::Shaderfile(std::string path, const std::vector<unsigned>& v)
{
// Capacity gets set here
#ifdef _ENGINE_DEBUG
_path = path;
#endif
std::ifstream file;
std::stringstream fs;
file.exceptions(std::ifstream::badbit | std::ifstream::failbit);
...
Но даже перед строкой "_path = path" емкость для v превышает 1000000000. Если у кого-то есть идея, в чем может быть проблема,пожалуйста, помогите.