![]() |
|
Модераторы: bsa |
![]()
|
|
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
1. Убрал шаблон..а зачем он нужен?
2. Убрал Buf::const_iterator j; из цикла (каждый раз заново создается) 3. вызовы типа std::cout << ":" << " "; заменил на std::cout << ": "; 4. исправил стиль форматирования - чтобы читалось легче Добавлено через 54 секунды
да ничем )) просто переписывая переименовал автоматом..внимание не обратил |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
а вылетает оно при вычислении i + 8 и i + 16
полученное значение проверяется на выход за end() и прога вылетает
и как от этого избавиться? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
azesmcar, вызов std::cout << ":" << " "; там был специально, т.к. в предыдущей строке задется выравнивание для 1 символа, а не для 2х
а шаблон чтобы можно было бы юникод юзать, при необходимости Добавлено через 8 минут azesmcar, а я не выхожу за рамки вектора, я сравниваю итераторы за границами вектора, но не разыменовываю их замена (j<i+8 && j<e) на (j<e && j<i+8) не помогла , как это ни странно %) Добавлено через 12 минут и 21 секунду я может дико туплю, но как сравнить i с e и i с i+8 не вычисляя i+8 ?? |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
видимо кроме итераторов в циклы надо ввести дополнительный счетчик k исключительно для "безопасного" вычисления k+8
спрашивается нафига тогда итераторы, если заменив их на указатели эта проблема пропадет %) |
|||
|
||||
| mes |
|
||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
как я понял, ошибка в понимании работы итератора end ()
для проверки, Вы не должны итератором выходить за пределы [begin(), end()], a следовательно проверка
не валидна. Вместо нее пользуйте проверку по инверсионому условию, т.е проверяете не выход итератора далеко за пределы, а сколько ему еще можно валидно расти.
P.S. хотя мне код с предыдущей страницы не нравится не только этим.. Это сообщение отредактировал(а) mes - 23.5.2009, 15:17 |
||||||||
|
|||||||||
| GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
mes, спасибо, "e-i>8" помогло,
зато теперь валится на
если заменить "i+8-j" на "i-j+8" то на этой строчке падать не будет (забавный контрпример неопределенности порядка вычисления) а чем еще не нравится тот код? Добавлено через 13 минут и 52 секунды вроде все ошибки убил. получился такой код:
что кстати оптимальнее, out<<'+' или out<<"+" ? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
предлагаю альтернативный вариант для доработки:
интуитивно полагаю что на вывод символа меньше затрат, хотя не думаю, что этим вопросом стоит озадачиваться. Это сообщение отредактировал(а) mes - 23.5.2009, 15:14 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
mes, действительно, так лучше, спасибо
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |