为向量分配内存

时间:2018-12-29 10:05:50

标签: c++ vector

谁能告诉我该程序为什么崩溃? 基本上我是在尝试创建数组向量?

#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;

int main() {
    vector <int> arr[100];
    arr[0][0] =5;
    printf("%d",arr[0][0]);

    return 0;
}

2 个答案:

答案 0 :(得分:5)

您正在创建一个由100个空向量组成的数组,而不是数组的向量(为什么不是向量的向量?)。没有什么可使用的。

使用此:

vector<vector <int>> arr(100, vector <int>(size));

具有您所需的尺寸。

如果要向量数组,请使用:

vector<array<int, 100>> arr(size);

答案 1 :(得分:2)

因为您没有在vector中分配元素。您将std::vector与静态数组混淆了,它们需要调用.push_back()或进行预分配。

因此在您的代码中arr[0]将起作用,因为在arr[0][0]崩溃时,这是对静态数组的第一个元素的引用。

尝试

arr[0].push_back(5)