C++新手关于二维动态数组的提问,要实现用户自定义的那种

新手刚接触C++,老师交给的任务第一步需要创建一个n行两列的二维数组,用于存放一些二维坐标,之后还要调用。不知道怎么创建和调用,需要用户自定义共N个,然后用户再cin进去各个二维坐标的值,自己百度和在csdn上查了半天都乱七八糟的,刚来csdn希望能感受一下各位大佬的温暖~~~

#include<iostream>
using std::cin;
using std::cout;
using std::endl;

int main() {
    int N;
    cin >> N;

    int** arr = new int*[N];
    for (int i = 0; i < N; i++) {
        arr[i] = new int[2];
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < 2; j++) {
            cin >> arr[i][j];
        }
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < 2; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}