Может кто-нибудь, пожалуйста, объясните мне подробно, почему следующий код для vectorY будет выполнять назначение, но размер VecY равен нулю? Кроме того, итераторы начала и конца застревают в первом узле. Кажется, что резерв работает только с push back и что вам нужно построить вектор с размером, если вы хотите, чтобы итераторы для векторов и размер работали должным образом. Я предполагаю, что push_back делает некоторый тип распределения, что прямое назначение не в этом случае? Я ищу подробности, объясняющие это, поэтому я могу убедиться, что я понимаю, что происходит с резервом и push_back в сравнении с конструкцией с элементом размера, а затем выполняет назначение, как в примере VecX.push_back versus operator [] назначение в векторах C++
#include <iostream>
#include <vector>
int main (int argc, char *argv[])
{
std::vector<int> vecX(2);
vecX[0] = 1;
vecX[1] = 2;
std::cout << " VecX0 Item: " << vecX[0] << std::endl;
std::cout << " VecX1 Item: " << vecX[1] << std::endl;
std::cout << " VectorX Size: " << vecX.size() << std::endl;
std::vector<int> vecY;
vecY.reserve(2);
vecY[0] = 1;
vecY[1] = 2;
std::cout << " VecY0 Item: " << vecY[0] << std::endl;
std::cout << " VecY1 Item: " << vecY[1] << std::endl;
std::cout << " VectorY Size: " << vecY.size() << std::endl;
}
Output
VecX0 Item: 1
VecX1 Item: 2
VectorX Size: 2
VecY0 Item: 1
VecY1 Item: 2
VectorY Size: 0
Читали ли вы какие-либо инструкции о том, что 'VECTOR' и как это работает? Это очень стандартный и хорошо документированный материал. –
Возможный дубликат [vector :: push \ _back vs vector :: operator \ [\]] (http://stackoverflow.com/questions/11007054/vectorpush-back-vs-vectoroperator) – Mgetz