Exemple #1
0
void testErase(IntVector& test)
{
	cout << "Erase pos 1" << endl;
	test.erase(1);
	testValues(test);

	cout << "Erase pos 2" << endl;
	test.erase(2);
	testValues(test);
	
	cout << "Erase pos 3" << endl;
	test.erase(3);
	testValues(test);
}
inline void IndexedList::erase(size_t const&e) {

	//	check();
	if (contains(e)) {
		//		TRACE("remove "<<e<<" " <<_element[e]<<std::endl);
		//		for (IntVector::const_iterator i(_list.begin()); i != _list.end(); ++i)
		//			std::cout << *i << std::endl;
		/// on switch avec le dernier puis on réduit
		//		std::cout << "_list[" << _element[e] << "] = " << _list.back()
		//				<< std::endl;

		_list[_element[e]] = front();
		_element[front()] = _element[e];

		//		std::cout << "_element[" << e << "] = " << max_size() << std::endl;

		_element[e] = max_size();

		_list[size() - 1] = -1;

		//		std::cout << "_list[" << size() - 1 << "] = -1;" << std::endl;

		_list.erase(_list.begin() + _list.size() - 1);
		//		std::cout << "###########" << std::endl;
		//		for (IntVector::const_iterator i(_list.begin()); i != _list.end(); ++i)
		//			std::cout << *i << std::endl;
		///
	}
	//	check();
	//	TRACE_N(size());
	//	TRACE_N(max_size());
	//	DEBUG_ASSERT("NO REALLOCATION ALLOWED"&&size()<=max_size());
}