C++ 将数字读入向量

C++ 将数字读入向量,c++,input,vector,C++,Input,Vector,我正在努力解决这个问题。基本上,我必须先读一个数字: int n; scanf("%d", &n); 然后我必须读取向量的N个区间: vector< vector<int> > intervals; int a, b; for (int i = 0; i < n; i++) { scanf("%d %d", &a, &b); intervals.at(i).at(0) = a; intervals.at(i).at(1) = b

我正在努力解决这个问题。基本上,我必须先读一个数字:

int n;
scanf("%d", &n);
然后我必须读取向量的N个区间:

vector< vector<int> > intervals;
int a, b;
for (int i = 0; i < n; i++) {
  scanf("%d %d", &a, &b);
  intervals.at(i).at(0) = a;
  intervals.at(i).at(1) = b;
}

知道我做错了什么吗?谢谢大家!

您正在使用
at
来存储尚未存在的向量元素


最简单的修复方法是使用
push_back
将新元素放入向量中-这就是它的设计目的。由于有两个维度,您需要使用它两次。

您正在使用
at
来存储向量中尚不存在的元素

intervals.at(i).at(0) = a;
最简单的修复方法是使用
push_back
将新元素放入向量中-这就是它的设计目的。因为有两个维度,所以需要使用它两次

intervals.at(i).at(0) = a;
是非法的,因为向量最初是空的。您可以使用
push_back
或预分配向量

我会预先分配向量,因为这将不需要在
推回时进一步重新分配:

vector< vector<int> > intervals(n);
int a, b;
for (int i = 0; i < n; i++) {
  scanf("%d %d", &a, &b);
  intervals.at(i).push_back(a);
  intervals.at(i).push_back(b);
}
vector间隔(n);
INTA,b;
对于(int i=0;i
是非法的,因为向量最初是空的。您可以使用
push_back
或预分配向量

我会预先分配向量,因为这将不需要在
推回时进一步重新分配:

vector< vector<int> > intervals(n);
int a, b;
for (int i = 0; i < n; i++) {
  scanf("%d %d", &a, &b);
  intervals.at(i).push_back(a);
  intervals.at(i).push_back(b);
}
vector间隔(n);
INTA,b;
对于(int i=0;i