выделение памяти для векторов - PullRequest
0 голосов
/ 29 декабря 2018

Может кто-нибудь сказать мне, почему эта программа падает?В основном я пытался создать вектор массивов?

#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 голосов
/ 29 декабря 2018

Поскольку вы не разместили элементы в vector.Вы путаете std::vector со статическими массивами, им нужно вызвать .push_back() или сделать prealloc.

Так что в вашем коде arr[0] будет работать, потому что это ссылка на первый элемент статического массива, тогда как arr[0][0] падает.

Попробуйте

arr[0].push_back(5)
0 голосов
/ 29 декабря 2018

Вы создаете массив из 100 пустых векторов , а не вектор массивов (почему не вектор векторов?).Там нет ничего, чтобы использовать.

Используйте это:

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

с размером, который вам требуется.

Если вы хотите вектор массивов, используйте:

vector<array<int, 100>> arr(size);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...