В коде, который вы опубликовали, нет ошибок (см. Ниже).
Наиболее вероятные объяснения вашей проблемы:
- Код, который вы опубликовалине совсем соответствует тому, что вы используете.
- Другой код, который, по вашему мнению, не связан, взаимодействует с вашими векторами, возможно, из-за повреждения памяти, в которой они хранятся.
МойПредполагается, что вы используете отладчик для проверки состояния vectObjVects
непосредственно перед вызовом reserve
.Если это выглядит нормально, перейдите к коду для резерва и посмотрите, каковы значения _Pos
и size()
.Они должны быть 0
и 10
- если это не так, это должно указать вам правильное направление.
Следующий код компилируется и выполняется точно так, как ожидается:
#include <vector>
class Obj
{
public:
Obj(int a, int b):iA(a), iB(b) {}
Obj():iA(0), iB(0) {}
int iA;
int iB;
};
int main() {
std::vector<std::vector<Obj> > vectObjVects(10);
vectObjVects[0].reserve(100);
}