Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аналог NULL для итератора 
:(
    Опции темы
TNT86
Дата 18.9.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



Есть итератор. С переходом на новую студию возникла проблема сравнения итератора с NULL. Нужна какой-то аналог NULL .
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
Fazil6
Дата 18.9.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(TNT86 @  18.9.2007,  15:00 Найти цитируемый пост)
Есть итератор. С переходом на новую студию возникла проблема сравнения итератора с NULL. Нужна какой-то аналог NULL .


что значит сравнить с NULL? в чем собственно проблема? может тебе надо сравнить с концом интервала?
PM MAIL   Вверх
TNT86
Дата 18.9.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



то есть например сделать запись вида

if (m_IterSelected!=NULL)
{
};

m_IterSelected это итератор на элемент в одном из списков, либо он должен быть равен чему-то типа NULL , если не один элемент не выделен.

сделать просто концом списка нельзя потому что студия ругается на сравнение итераторов из разных списков.
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
Daevaorn
Дата 18.9.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(TNT86 @  18.9.2007,  16:18 Найти цитируемый пост)
m_IterSelected это итератор на элемент в одном из списков, либо он должен быть равен чему-то типа NULL , если не один элемент не выделен. 

мягко говоря, это не область применения С++ итераторов.
Цитата(TNT86 @  18.9.2007,  16:18 Найти цитируемый пост)
сделать просто концом списка нельзя потому что студия ругается на сравнение итераторов из разных списков. 

сравнивай с правильным.
PM MAIL WWW   Вверх
TNT86
Дата 18.9.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



Дело в том, что вообщем-от уже все написано и работает под предыдущей версией студии. Вопрос в том, как отделаться меньшим злом и перенести все под новую студию?
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
Fazil6
Дата 18.9.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Daevaorn @  18.9.2007,  15:30 Найти цитируемый пост)
мягко говоря, это не область применения С++ итераторов.

согласен. Ерунда какая-то. Если итератор не инициализирован, то там в общем виде что попало.
Цитата(TNT86 @  18.9.2007,  15:18 Найти цитируемый пост)
сделать просто концом списка нельзя потому что студия ругается на сравнение итераторов из разных списков.

а какая разница ? итераторы из разных списков не могут быть равны по определению. Или может тебе надо сравнивать значение, на которое этот итератор указывает?
PM MAIL   Вверх
Daevaorn
Дата 18.9.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(TNT86 @  18.9.2007,  16:34 Найти цитируемый пост)
Вопрос в том, как отделаться меньшим злом и перенести все под новую студию? 

переписать правильно.
PM MAIL WWW   Вверх
Fazil6
Дата 18.9.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(TNT86 @  18.9.2007,  15:34 Найти цитируемый пост)
Дело в том, что вообщем-от уже все написано и работает под предыдущей версией студии. Вопрос в том, как отделаться меньшим злом и перенести все под новую студию?

ну так показывай как там у тебя сделано. Может и можно что-то придумать...
PM MAIL   Вверх
TNT86
Дата 18.9.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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 эксперты
PM MAIL WWW   Вверх
Daevaorn
Дата 18.9.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(TNT86 @  18.9.2007,  16:48 Найти цитируемый пост)
m_IterSelected может указывать как на элементы списка list1 так и на эл-ты list2 , либо вообще никуда не указывать

указатель на элемент тебя спасет.
PM MAIL WWW   Вверх
TNT86
Дата 18.9.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



Как мне тогда перемещаться по STLевскому списку?
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
Lazin
Дата 18.9.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



#define _SECURE_SCL 0
вырубает checked итераторы
PM MAIL Skype GTalk   Вверх
UnrealMan
Дата 18.9.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(TNT86 @  18.9.2007,  16:48 Найти цитируемый пост)
В предыдущей версии студии я это делал через присваивание итератору NULL и затем проверки на это.

Цитата(TNT86 @  18.9.2007,  16:48 Найти цитируемый пост)
Проблема в том, что при сравнении итераторов из разных списков программа вылетает, вместо того, чтобы вернуть "не равны"!

Это говорит о том, что нужно понимать, что пишешь, а не тупо доводить программу до вроде бы рабочего состояния. Понятия нулевого итератора не существует. IMHO, теперь самый простой способ выйти из положения - это написать обёртку для итератора, для которой нулевое состояние будет предусмотрено, и сделать соотвествующие замены. 

Это сообщение отредактировал(а) UnrealMan - 18.9.2007, 17:06
PM MAIL   Вверх
TNT86
Дата 18.9.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



Я и понимал что пишу и был уверен, что такое понятие существует - ведь все пахало. Я построил алгоритм исходя из этого.

Добавлено через 11 минут и 28 секунд
#define _SECURE_SCL 0 

вроде бы убирает только ворнинги - вылеты программы не исчезают!
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
bsa
Дата 18.9.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



TNT86, в том то и дело, что ты не понимал. Имхо, сейчас надо просто тупо переписывать. Или, если уж тебе очень надо чтобы этот итератор ссылался на элементы обоих списков, то в том же месте, где делаешь инициализацую итератора, делай инициализацию итератора означающего конец списка.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.