0

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

0 Answers0