![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
У неня такая задача ест функц.OnLButtonDown
мне надо заполнить массив поиннами с помашю итератора и нарисовать rectangle : void CTestView::OnLButtonDown(UINT nFlags, CPoint point) { using namespase std; vector<CPoint>vec; vector<CPoint>::iterator it; for(it = vec.begin();it!=vec.end();it++) { CPoint a_point; a_point = (*it); vec.push_back(point); rect.SetRect(vec[*it].x + 5,vec[it].y + 5,vec[it].x - 5,vec[it].y - 5); } CView::OnLButtonDown(nFlags, point); } почему не пашит? --------------------
|
|||
|
||||
| ZeusAtVingrad |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Наверное потому что у тебя вектор пустой. Вот это:
вообще что-то несусветное. И встречный вопрос: А как именно не пашет-то? ЗЫ: Что-то тебе с языком делать надо. |
||||
|
|||||
| MAKCim |
|
||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
vec.begin()==vec.end() на первой итерации Добавлено @ 20:42
зачем? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||
|
|||||||||
| Succorso |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
knut, весь алгоритм с итераторами насмарку:
1) как было сказано выше - у тебя действительно пустой вектор, и ни одной итерации не будет выполнено. 2) в качестве параметра оператору [] нужен интегральный тип "int" (если ты оператор ранее не перегружал), а тут ты передаёшь, в качестве индекса переменную не типа int, а типа CPoint. Конечно же, компиллятор не может сделать преобразование в int. А тут вообще в качестве индекса ты передаёшь адрес в памяти. Советую побольше почитать информации по контейнерам. |
|||
|
||||
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
благодарности всем.
Ну я веть в функц. void CTestView::OnLButtonDown(UINT nFlags, CPoint point) забиваю вектор поинтами vec.push_back(point)? Succorso Если мне взать vector<CPoint>vec; vector<int>::iterator it; итератор типа int ,а вектор у меня CPoint то будут такие ошыбки error C2440: '=' : cannot convert from 'class CPoint *' to 'int *' error C2446: '!=' : no conversion from 'class CPoint *' to 'int *' error C2230: '!=' : indirection to different types тогда как? Скинь инф. илеи сылки по контейнерам если не трудно. --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
До этой строчки дело не доходит! -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| ZeusAtVingrad |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Не адрес в памяти, а объект std::vector<CPoint>::iterator Кстати, в общем случае, если в контейнер добавлены или удалены данные - итератор становится недействительным? Или это только при удалении? |
|||
|
||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
При этом из него же и пытаешься точки брать (а их там нет - какая досада!
Смотря какой контейнер. Если вектор, то все итераторы становятся недействительными как при вставке, так и при удалении (Т.е. они могут случайно остаться действительными, но полагаться на это нельзя.) То же верно и для деки. Списки, наборы, отображения - итераторы всегда остаются действительными кроме итератора на удаленный элемент. -------------------- ... |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |