Форум программистов, компьютерный форум CyberForum.ru

Vector subscript out of range - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему sizeof массива char равно 4? http://www.cyberforum.ru/cpp-beginners/thread1214817.html
Почему sizeof ch3 равно 4? #include <iostream> #include <cstring> int main() { char ch1 = "Cpp"; char ch2 = {'C', '+', '+', '\0'};
C++ Создать массив указателей с возможностью удаления любого элемента Привет, друзья! Мне в одной программе нужно было создать массив указателей с возможностью удаления любого элемента, сделал с помощью vector. Схематично делал примерно так: vector<Base*>arr; Base* a = new Base; arr.push_back(a); a = new Base; arr.push_back(a); a = new Base; arr.push_back(a); ... http://www.cyberforum.ru/cpp-beginners/thread1214813.html
C++ Из двух стеков равной длины создать один стек, не удаляя исходные стеки (создавать копии элементов)
Помогите переделать код под новое условие Старое условие: Из двух стеков равной длины создать один стек, не удаляя исходные стеки (создавать копии элементов). При создании нового стека элементы брать по-очереди по одному элементу из каждого стека. #include <windows.h> // SetConsoleOutputCP, SetConsoleCP #include <stdio.h> //printf , fgets #include <conio.h> // getch #include...
Приведение к void C++
Доброй ночи! Просматривая код некоторой программы, обнаружил конструкцию следующего вида: void function(char a, char *p) { (void) a; (void) p; } Что это значит? Никогда до этого момента такого не видел.
C++ Двумерный массив. Где ошибка? http://www.cyberforum.ru/cpp-beginners/thread1214780.html
Дана действительная квадратная матрица порядка N (N – нечетное), заполненная случайными числами, все элементы различны. Найти наибольший элемент среди стоящих на главной диагонали и поменять его местами с элементом, стоящим на пересечении этих диагоналей. # include <iostream> using namespace std; int main () { const int r=5,/*строки*/ c=5;//элементов в одной строке (столбцы) int mas ...
C++ Как в двумерном массиве найти число находящееся на пересечении двух диагоналей? Помогите, пожалуйста! Нужно решить задачу: Дана действительная квадратная матрица порядка N (N – нечетное), заполненная случайными числами, все элементы различны. Найти наибольший элемент среди стоящих на главной диагонали и поменять его местами с элементом, стоящим на пересечении этих диагоналей. Встала проблема найти и запомнить число которое находиться на пересечении двух диагоналей!!!!... подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
23.06.2014, 09:18     Vector subscript out of range
Цитата Сообщение от alsav22 Посмотреть сообщение
Предположим, что в одном из первых if() происходит удаление последнего элемента вектора (MeteorVec.pop_back()), вектор пуст, но в следующем if() будет обращение по индексу к пустому вектору (например, if (MeteorVec[i]->position.x < 30)), что и вызовет ошибку.
Не думаю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
struct sd {
  int a;
  sd(int A): a(A)
  {}
};
int main() {
  std::vector<sd> coll;
  //coll.reserve(2);
  coll.push_back(11);
  coll.pop_back();
  coll.pop_back();
  coll.pop_back();
  coll.pop_back();
  std::cout << coll[59].a << std::endl;
 
  return 0;
}
Компилится без проблем и кидает искючение только если векторе не выделена память для элементов. Так что кто кидает исключение вопрос открытый.
Антон219, посмотрите в своей реализации кто может кидать такое исключение.
 
Текущее время: 19:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru