Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
1

Почему массив не переполняется?

02.02.2011, 06:52. Показов 1791. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот в одной книге есть задание создать вектор и скопировать элементы в массив. Почему массив не переполняется в следующем коде, какая-то загадка для меня. Вроде бы после введения 2-3 элементов он не должен больше принимать, а он принимает, и только после введения 6 элементов программа завершается с ошибкой, а 5 спокойно запоминает, ладно бы вектор, а тут массив, вроде бы с определенным размером:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
int i = 0;
     int ar1[2];
     vector <int> ivec (0);
           while (cin >> i) 
      ivec.push_back(i);
                  for (vector<int>::size_type j = 0; j != ivec.size(); ++j) {
           ar1[j] = ivec[j];
           cout << ivec[j] << ar1[j] << endl;
            }
     getch();
     return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2011, 06:52
Ответы с готовыми решениями:

не переполняется динамический массив
Заметил странную штуку: при заполнении динамического массива в цикле, когда счётчик становится...

Переполняется стек
Вот код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt; using namespace std; ...

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)?
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По...

Почему переполняется стек
Написал программу, но не пойму почему переполняется стек. Суть программы - возведение в степень ч/з...

22
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.02.2011, 16:38 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну ответ очевиден - это сделано для скорости. В контейнерах std::vector, std::deque и std::string тоже при указании индекса в квадратных скобках его правильность не проверяется, и если он вышел за пределы, то поведение программы неопределенное. Для получения элемента этих контейнеров по индексу с его проверкой используется функция-член at (которая, естественно, работает медленнее). В случае выхода индекса за пределы она генерирует исключение out_of_range.
Так значит ограниченный?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
02.02.2011, 18:20 22
Цитата Сообщение от taras atavin Посмотреть сообщение
Так значит ограниченный?
нет, только проверка на попадание в пределы через
Цитата Сообщение от Mr.X Посмотреть сообщение
функция-член at
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.02.2011, 07:10 23
Цитата Сообщение от AdPotam
Есть легкое удивление, почему это разработчики языка С не додумались жестко ограничить размеры массива, а не провоцировать ситуации, когда возможны всякие ошибки.
код, получаемый после компиляции, должен быть максимально приближен к тому, что было написано
0
03.02.2011, 07:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2011, 07:10
Помогаю со студенческими работами здесь

Почему не загружается картинка, но при этом переполняется память?
Всем доброго времени суток!Я хотел бы узнать почему не загружается картинка и при этом...

Стек переполняется и переполняется...
Короче говоря, в ходе написания программы наткнулся на то, что все время вылетает ошибка о том, что...

Память переполняется
Вот код. Не могу понять. Все равно память переполняется и прога не работает. protected void...

Переполняется папка TEMP
папка TEMP, как я примерно определил, при запуске IE или Opera начинает очень быстро забиваться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru