vector - erase!!!

Модератор: Fastman

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

vector - erase!!!

Непрочитанное сообщение ASD » 2009-07-15 14:59:52

Буду краток...научите работать с вектором
Server.cpp: In member function 'void Server::EraseConnect(int)':
Server.cpp:199: error: no matching function for call to 'std::vector<void*, std::allocator<void*> >::erase(int&)'
/usr/include/c++/4.2/bits/vector.tcc:109: note: candidates are: typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >) [with _Tp = void*, _Alloc = std::allocator<void*>]
/usr/include/c++/4.2/bits/vector.tcc:121: note: typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, __gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >) [with _Tp = void*, _Alloc = std::allocator<void*>]
*** Error code 1
server.h

Код: Выделить всё

#include <vector>
........................................................................

class Server
	
private:
	std::vector<void*> m_ConnectObj;
	
........................................................................
};
server.cpp

Код: Выделить всё

void Server::EraseConnect(int i)
{
.....................................
	m_ConnectObj.erase(i);
......................................
}



void Server::Work(void)
{
	int m_ConnectObjItem, m_ConnectStateItem;
	HTTPConnect* pconnect;


	for(m_ConnectObjItem = 0; m_ConnectObjItem != GetConnectObjSize(); m_ConnectObjItem++)
	{
		void* pConObj = GetConnectObj(m_ConnectObjItem);
		pconnect = (HTTPConnect*)pConObj;

		switch(GetConnectState(pConObj))
		{
			case THR_START:
				{
                                        ................................................................
					break;
				}
			case THR_STOP:
				{
					DBG(("STOP:id=%d",pConObj));
					pconnect->SetDead();
					break;
				}
			case THR_DEAD:
				{
					EraseConnect(m_ConnectObjItem);
					break;
				}

		}
................................................................
	}
}


Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: vector - erase!!!

Непрочитанное сообщение Fastman » 2009-07-17 18:06:00

Чего учить то если документы не читаешь вообще :)))
Тебе даже компилятор радостно сообщает что нету у вектора метода erase(...) который принимает в качестве параметра int

Код: Выделить всё

Server.cpp:199: error: no matching function for call to 'std::vector<void*, std::allocator<void*> >::erase(int&)'
Потому как явно черным по белому в доках написано:

Код: Выделить всё

iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
P.S.
Тебе чтобы не морочить голову - смотреть на remove(...)
Ну и по STL-у почитать что нить )
Главное в жизни здоровье и любовь, остальное я все куплю.

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: vector - erase!!!

Непрочитанное сообщение ASD » 2009-07-19 9:47:22

Fastman писал(а):Чего учить то если документы не читаешь вообще :)))
Тебе даже компилятор радостно сообщает что нету у вектора метода erase(...) который принимает в качестве параметра int

Код: Выделить всё

Server.cpp:199: error: no matching function for call to 'std::vector<void*, std::allocator<void*> >::erase(int&)'
Потому как явно черным по белому в доках написано:

Код: Выделить всё

iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
P.S.
Тебе чтобы не морочить голову - смотреть на remove(...)
Ну и по STL-у почитать что нить )
ок. спасибо :-D ....уже почитал