2014-01-05 4 views
0

Это может быть глупый вопрос, но я просто не могу понять, почему это бросает ошибку сегментации (ядро сбрасывали):Вектор векторов (символов): ядро ​​сбрасывали

#include <vector> 
using namespace std; 
vector< vector<char> > samplevct; 
int main(void) 
{ 
    samplevct[0].push_back('a'); 
    return 0; 
} 

Может кто-нибудь объяснить, почему это не работает?

Я использую g ++, Fedora 20, если это важная информация. Заранее благодарен

+1

Есть ли причина не использовать 'vector '? –

+1

Наверное, совсем нет. Спасибо. – Magnus

ответ

8

Ваш вектор пуст, так что вы просто не можете получить доступ к samplevct[0]. Вам нужно заполнить вектор, по крайней мере, одним элементом. Например,

#include <vector> 

int main() 
{ 
    using std::vector; 
    vector< vector<char> > samplevct(1); // size 1 vector 
    samplevct[0].push_back('a');   // OK 
    return 0; 
} 

Смотрите this reference Более подробную информацию о том, как использовать std::vector.

1

Это пустой вектор, поэтому samplevct[0] не существует. Модифицировать это неопределенное поведение - и, к счастью, в вашем случае он сбрасывается очевидным образом.

Смежные вопросы