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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление из вектора по указателю на элемент вектор 
:(
    Опции темы
fuckingniger
Дата 20.6.2011, 18:03 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



как удалить элемент вектора, имея указатель на этот  элемент

Это сообщение отредактировал(а) fuckingniger - 20.6.2011, 18:03
PM MAIL   Вверх
hawk3500
Дата 20.6.2011, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привиди пример.
--------------------
воин dzen'a
PM MAIL   Вверх
borisbn
Дата 21.6.2011, 09:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



у меня де-жа-вю ?
Цитата оттуда (Earnest)
Цитата

так что конструкция типа CMyVector::iterator it = vector.begin() + (pointer_to_element - &vector[0]) работать должна всегда

Код

v.erase( v.begin() +(ptr - &v[ 0 ]) );

так не работает ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
fuckingniger
Дата 21.6.2011, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 нет. Поэтому и написал)
PM MAIL   Вверх
borisbn
Дата 21.6.2011, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(fuckingniger @  21.6.2011,  14:24 Найти цитируемый пост)
 нет. Поэтому и написал)

что не работает - секрет ? Давай поочерёдно:
1.
Код
int offset = ptr - &v[ 0 ];
cout << offset;

2. 
Код
cout << *ptr;

3.
Код
vector< int >::iterator it = v.begin() + offset;
cout << (*it);



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
volatile
Дата 22.6.2011, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Бьюсь об заклад, что у fuckingniger, указатель указывает просто мимо вектора.
Скорей всего на копию элемента. (телепатия это сила!)

fuckingniger покажите вашу функцию find_vector_value()
Собака порылась именно там. 
PM MAIL   Вверх
fuckingniger
Дата 22.6.2011, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

COORD* find_vector_value(int x,int y,vector<COORD> t)//есть ли такой вектор в списке и вернем его если есть
{
    COORD* it= &t.front();
    COORD* ptr= &t.back();
    if(it->X==x && it->Y==y)
        return it;
    while(it != ptr)
    {
        it++;
        if(it->X==x && it->Y==y)
            return it;
        
    }
    return NULL;
}

PM MAIL   Вверх
borisbn
Дата 22.6.2011, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Ты возвращаешь указатель на элемент вектора t!!!
Который "живёт" только в этой ф-ции. Т.е. на копию какого-то вектора.…
Воспользуйся find_if
или просто find, если в COORD больше ничего нет, кроме x и y


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
asmdzen
Дата 22.6.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


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

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



непонятно вообще зачем используются указатели, можно ведь по индексу пройтись или итератором обойтись, или это привычки Сишника )
COORD* find_vector_value(int x,int y,vector<COORD>& t) может так пойдет?

Это сообщение отредактировал(а) asmdzen - 22.6.2011, 10:32
PM MAIL   Вверх
borisbn
Дата 22.6.2011, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(asmdzen @  22.6.2011,  09:54 Найти цитируемый пост)
COORD* find_vector_value(int x,int y,vector<COORD>& t) может так пойдет?

тогда уж
Цитата
COORD* find_vector_value(int x,int y, const vector<COORD>& t)

хотя, лучше find_if или find. лови
http://liveworkspace.org/code/b9be19a72a5d...afec475b97846ff



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
fuckingniger
Дата 22.6.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а разве они автоматически по ссылке не передаются?
PM MAIL   Вверх
bsa
Дата 22.6.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(fuckingniger @  22.6.2011,  12:21 Найти цитируемый пост)
а разве они автоматически по ссылке не передаются? 

нет конечно!!! в С++ ничего автоматически по ссылке не передается - как написал, так и будет передано.
PM   Вверх
borisbn
Дата 22.6.2011, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(fuckingniger @  22.6.2011,  12:21 Найти цитируемый пост)
а разве они автоматически по ссылке не передаются?

ещё автоматически ищется максимальный элемент и делится на него  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Earnest
Дата 22.6.2011, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Автоматически (т.е. сами собой) возникают только ошибки. Все остальное приходится делать руками... smile 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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