Я пытаюсь использовать вектор deques пользовательского класса. У меня есть это:
std::vector<std::deque<ParamClass<Type1,Type2>>> lines;
Где ParamClass
- это параметризованный класс с двумя параметрами класса. Вышеприведенная строка находится в заголовке (как приватная переменная) другого класса. Конструктор этого класса ничего не делает для переменных lines
.
Позже в коде я стараюсь:
std::cout << lines.at(0).size() << std::endl;
Это должно печатать 0 (поскольку ничто не было добавлено к векторам в векторе. Тем не менее, я получаю segfault. Должен ли я как-то "инициализировать" свои призы или что-то еще?
Вы получаете доступ к элементу 0, но вы ничего не добавили, поэтому (0) пытается получить доступ к незаконной памяти
Вы должны убедиться, что first.size()> 0 first
at()
генерирует исключение out_of_range.