关于#c++#的问题,如何解决?

本人c++初学
请问为何出现如下问题?

img

#include 
#include 
using namespace std;

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        for (int i = 0; i < nums.size() - 1; ++i) {
            for (int j = i + 1; j < nums.size(); ++j) {
                if (nums[i] + nums[j] == target)
                    return { i,j };
            }
        }
        return {};
    }
};

int main() {
    Solution solution;
    vector<int> position;
    vector<int> arr;
    for (int i = 0; i < 3; i++)
    {
        cout << "请输入一组数字" << endl;
        cin>>arr[i];
    }
    cout << "请输入期望数值" << endl;
    int target = 0;
    cin >> target;
    position = solution.twoSum(arr, target);
    for (auto i : position)
        cout << i << endl;
    system("pause");
    return 0;

}

这个弹框提示数组越界,out of range
修改如下:

vector<int> arr;
int n;
    for (int i = 0; i < 3; i++)
    {
        cout << "请输入一个数字" << endl;
        cin>>n;
        arr.push_back(n);
    }

vector未初始化,不能用下标引用,你输入的时候不能用cin>>arr[i];,而应该是arr.push_back(输入的数字)