![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| TNT86 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 14.8.2006 Где: Одесса Репутация: нет Всего: нет |
Есть итератор. С переходом на новую студию возникла проблема сравнения итератора с NULL. Нужна какой-то аналог NULL .
--------------------
виртуальныe MYSQL и PHP эксперты |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| TNT86 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 14.8.2006 Где: Одесса Репутация: нет Всего: нет |
то есть например сделать запись вида
if (m_IterSelected!=NULL) { }; m_IterSelected это итератор на элемент в одном из списков, либо он должен быть равен чему-то типа NULL , если не один элемент не выделен. сделать просто концом списка нельзя потому что студия ругается на сравнение итераторов из разных списков. --------------------
виртуальныe MYSQL и PHP эксперты |
|||
|
||||
| Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
мягко говоря, это не область применения С++ итераторов.
сравнивай с правильным. |
||||
|
|||||
| TNT86 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 14.8.2006 Где: Одесса Репутация: нет Всего: нет |
Дело в том, что вообщем-от уже все написано и работает под предыдущей версией студии. Вопрос в том, как отделаться меньшим злом и перенести все под новую студию?
--------------------
виртуальныe MYSQL и PHP эксперты |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
согласен. Ерунда какая-то. Если итератор не инициализирован, то там в общем виде что попало.
а какая разница ? итераторы из разных списков не могут быть равны по определению. Или может тебе надо сравнивать значение, на которое этот итератор указывает? |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| TNT86 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 14.8.2006 Где: Одесса Репутация: нет Всего: нет |
Допустим есть два списка list<int> list1 и list<int> list2
и итератор вида list<int>::iterator m_IterSelected; m_IterSelected может указывать как на элементы списка list1 так и на эл-ты list2 , либо вообще никуда не указывать вот третью то ситуацию мне и нужно проверять как-то . В предыдущей версии студии я это делал через присваивание итератору NULL и затем проверки на это. Добавлено через 3 минуты Fazil6 а какая разница ? итераторы из разных списков не могут быть равны по определению. Или может тебе надо сравнивать значение, на которое этот итератор указывает? Проблема в том, что при сравнении итераторов из разных списков программа вылетает, вместо того, чтобы вернуть "не равны"! --------------------
виртуальныe MYSQL и PHP эксперты |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| TNT86 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 14.8.2006 Где: Одесса Репутация: нет Всего: нет |
Как мне тогда перемещаться по STLевскому списку?
--------------------
виртуальныe MYSQL и PHP эксперты |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
#define _SECURE_SCL 0
вырубает checked итераторы |
|||
|
||||
| UnrealMan |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Это говорит о том, что нужно понимать, что пишешь, а не тупо доводить программу до вроде бы рабочего состояния. Понятия нулевого итератора не существует. IMHO, теперь самый простой способ выйти из положения - это написать обёртку для итератора, для которой нулевое состояние будет предусмотрено, и сделать соотвествующие замены. Это сообщение отредактировал(а) UnrealMan - 18.9.2007, 17:06 |
||||
|
|||||
| TNT86 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 14.8.2006 Где: Одесса Репутация: нет Всего: нет |
Я и понимал что пишу и был уверен, что такое понятие существует - ведь все пахало. Я построил алгоритм исходя из этого.
Добавлено через 11 минут и 28 секунд #define _SECURE_SCL 0 вроде бы убирает только ворнинги - вылеты программы не исчезают! --------------------
виртуальныe MYSQL и PHP эксперты |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
TNT86, в том то и дело, что ты не понимал. Имхо, сейчас надо просто тупо переписывать. Или, если уж тебе очень надо чтобы этот итератор ссылался на элементы обоих списков, то в том же месте, где делаешь инициализацую итератора, делай инициализацию итератора означающего конец списка.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |