382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
1 | |
Вопрос о стеке в С++09.11.2009, 17:42. Показов 2270. Ответов 10
Метки нет Все метки)
(
Всем привет!!
У меня тут вопрос про стек. Цитата из книги: С функцией empty() всё понятно. А вот как понять реализацию функции full() ? Она же будет постоянно возвращать true. Любое число будет всегда больше, чем разность этого числа с единицей. СПАСИБО!
0
|
|
09.11.2009, 17:42 | |
Ответы с готовыми решениями:
10
Вопрос о стеке
Ошибка в стеке! Thread на стеке |
![]() 2924 / 1273 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
09.11.2009, 21:48 | 2 |
Не будет.
iStack::size() и _stack.size() - почувствуй разницу!
1
|
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
10.11.2009, 16:15 [ТС] | 3 |
CheshireCat, извини, но что-то разницы я не чувствую...
Можно конкретнее? Просто я ещё новичок! Добавлено через 42 минуты Подожди... Ты имеешь ввиду, что значение _top возвращает функция size() из класса iStack, а _stack.size() это функция size() из класса <vector> ? В этом заключается разница?
0
|
![]() 2924 / 1273 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
10.11.2009, 23:24 | 4 |
Ну, не видя реализации (или хотя бы объявления) члена _stack, трудно сказать.... Но, скорее всего, так и есть. Важно то, что это две разных функции size().
1
|
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
||||||
11.11.2009, 16:28 [ТС] | 5 | |||||
CheshireCat,
Определение члена _stack:
0
|
![]() 2924 / 1273 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
11.11.2009, 21:39 | 6 |
Нет, не так. Как и всегда в C++, массивы индексируются с 0.
Поэтому, например, если _stack.size() == 10 (т.е. емкость стека - 10 элементов), то они будут иметь индексы: 0,1,2,3,4,5,6,7,8,9. Максимальный индекс элемента - 9, что соответствует 10-ти элементам в стеке.
1
|
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
12.11.2009, 19:28 [ТС] | 7 |
CheshireCat,
Если у нас, например, будет стек из 3 элементов, и _top будет равен _stack.size()-1 (т.е. двум), тогда третий элемент остается не заполненным. Ведь после того как _top был использован в качестве индекса в векторе (2 для третьего элемента) постфиксный инкремент увеличит его значение до 3. Сл-но стек будет полным, когда _top будет равен _stack.size(), а не _stack.size()-1.
0
|
![]() 2924 / 1273 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
12.11.2009, 21:54 | 8 |
Гм, а где в твоем сообщении от 09.11.2009, 17:42 хоть полсловечка про постфиксный инкремент??? Телепаты все в отпуске, а код реализации этого стека ты не привел....
1
|
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|||||||||||
13.11.2009, 15:17 [ТС] | 9 | ||||||||||
Ну да. Извини. Вот объявление:
Что в первых двух строчках после спецификатора public: я точно не знаю. О такой конструкции в книге еще не говорилось. Это же, наверное, инициализация членов _stack и _top ? Добавлено через 7 минут А вот и реализация функций pop(), push() и full() :
0
|
![]() 2924 / 1273 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
15.11.2009, 21:29 | 10 | |||||
Тогда таки да, правильная версия функции full() должна выглядеть так:
1
|
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
16.11.2009, 22:45 [ТС] | 11 |
CheshireCat, спасибо большое, что потратил на меня время, теперь я хоть уверен, что в книге опечатка. Спасибо!!!!!
![]() ![]() ![]() ![]() ![]() ![]() ![]()
0
|
16.11.2009, 22:45 | |
Помогаю со студенческими работами здесь
11
Структура в стеке Тройки чисел в стеке Задача о LIFO стеке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |