7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|
1 | |
Удаление из вектора объектов08.02.2016, 17:04. Показов 7611. Ответов 18
Метки нет (Все метки)
Есть вектор, состоящий из объектов какого-то класса.
Есть объект принадлежащий этому классу. На вход методу приходит этот объект и его надо удалить из вектора. Как это сделать?
0
|
08.02.2016, 17:04 | |
Ответы с готовыми решениями:
18
Удаление из вектора нескольких объектов Добавление и удаление объектов. Рисование объектов на экране Сортировка объектов вектора Вывод в файл вектора объектов |
104 / 104 / 99
Регистрация: 30.06.2015
Сообщений: 272
|
||||||
08.02.2016, 17:26 | 2 | |||||
feck,
1
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
||||||
08.02.2016, 17:30 [ТС] | 3 | |||||
0
|
Неэпический
|
||||||
08.02.2016, 17:33 | 4 | |||||
Сообщение было отмечено feck как решение
Решение
2
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|
08.02.2016, 18:15 [ТС] | 5 |
Croessmah, Я правильно понимаю, что при этом оставшиеся справа элементы вектора сдвигаются влево на позицию?
0
|
Неэпический
|
||||||
08.02.2016, 18:29 | 6 | |||||
В удаляемые элементы будут копироваться элементы, которые справа.
Разберите работу кода:
Сообщение от вывод
0
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|||||||||||
09.02.2016, 09:41 [ТС] | 7 | ||||||||||
Croessmah,
Действительно. Из
Это из-за того, что
0
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|||||||||||
10.02.2016, 11:30 [ТС] | 9 | ||||||||||
Croessmah, появился новый вопрос. Там, где он возник в первый раз - все работает. Но вот в другом месте нет. На вход функции, в которой проблема, подается (SHP_Class2 shpSrc)
>c:\program files (x86)\microsoft visual studio 12.0\vc\include\algorithm(1734): error C2678: binary '==' : no operator found which takes a left-hand operand of type Class1::Struct1' (or there is no acceptable conversion) 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\thread(202): could be 'bool std::operator ==(std::thread::id,std::thread::id) throw()' 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\system_error(410): or 'bool std::operator ==(const std::error_condition &,const std::error_code &) throw()' 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\system_error(402): or 'bool std::operator ==(const std::error_code &,const std::error_condition &) throw()' 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\exception(507): or 'bool std::operator ==(const std::exception_ptr &,std::nullptr_t)' 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\exception(502): or 'bool std::operator ==(std::nullptr_t,const std::exception_ptr &)' 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\exception(497): or 'bool std::operator ==(const std::exception_ptr &,const std::exception_ptr &)' 1> c:\program files (x86)\windows kits\8.1\include\shared\guiddef.h(192): or 'bool operator ==(const GUID &,const GUID &)' [found using argument-dependent lookup] 1> while trying to match the argument list '(Class1::Struct1, const Class1::Struct1)' 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\algorithm(1748) : see reference to function template instantiation '_FwdIt std::_Remove<Class1::Struct1*,_Ty>(_FwdIt,_FwdIt,const _Ty &)' being compiled 1> with 1> [ 1> _FwdIt=Class1::Struct1 * 1> , _Ty=Class1::Struct1 1> ] 1> c:\projects\file3.cpp(16) : see reference to function template instantiation '_FwdIt std::remove<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<Class1::St ruct1>>>,Class1::Struct1>(_FwdIt,_FwdIt,const _Ty &)' being compiled 1> with 1> [ 1> _FwdIt=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<Class1::Struct1 >>> 1> , _Ty=Class1::Struct1 1> ]
0
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
||||||
10.02.2016, 15:21 [ТС] | 11 | |||||
Croessmah, я и сам не знаю, как сравнить их...
А noncopyable как влияет на это? Вроде не копирую объект. Добавлено через 13 минут Попытался сделать так, но пишет: слишком много аргументов.
0
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|
10.02.2016, 16:45 [ТС] | 13 |
Croessmah, пишет, что no operator == matches these operands. Operand types are Class2==Class2.
Надо убрать "звездочки"? Добавлено через 13 минут Не, явно не в этом дело.
0
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|
10.02.2016, 17:17 [ТС] | 15 |
Сейчас уже тоже хотел написать, что походу надо для Class2 тоже перегружать)
Спасибо! Добавлено через 27 минут Croessmah, и еще вопрос, почему == принимает одно значение? Должно же быть вроде два?
0
|
Неэпический
|
||||||
10.02.2016, 17:41 | 16 | |||||
ну так это же член класса, так что первый параметр и так уже есть.
Если вне класса делать, то два:
0
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|
10.02.2016, 17:43 [ТС] | 17 |
Croessmah, Понял про внешнюю перегрузку. Про внутреннюю тоже понял, только как определить в произвольном случае, какой первый параметр(который уже есть и хотя бы его имя)?
0
|
Неэпический
|
|
10.02.2016, 17:59 | 18 |
Здесь уже я немного не понял.
В не статические функции-члены неявно передается указатель на "текущий" объект - this. this->shpSrc или просто shpSrc , компилятор сам сделает через this.
1
|
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
|
|
11.02.2016, 13:00 [ТС] | 19 |
Croessmah, я имел ввиду для произвольного класса, не моего. Делать через this, значит?
0
|
11.02.2016, 13:00 | |
11.02.2016, 13:00 | |
Помогаю со студенческими работами здесь
19
Сортировка вектора объектов по полю Std::sort сортировка вектора объектов Предикаты. Выборка объектов из вектора по определённому полю Как освободить память из-под вектора объектов? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |