What is the difference between specifying the size of vector in declaration vs using reserve? My code seems to produce different results.
int main() {
int n = 10;
std::vector<int> arr(n);
arr.push_back(0);
arr.push_back(1);
for (int i = 2; i <= n; i++)
{
int a = arr[i - 1] + arr[i - 2];
arr.insert(arr.begin() + i, a);
}
std::cout << arr[3] << std::endl;
}
The above code prints 0
int main() {
int n = 10;
std::vector<int> arr;
arr.reserve(n);
arr.push_back(0);
arr.push_back(1);
for (int i = 2; i <= n; i++)
{
int a = arr[i - 1] + arr[i - 2];
arr.insert(arr.begin() + i, a);
}
std::cout << arr[2] << std::endl;
}
This code prints 2 which is correct