multimap

Модератор: Fastman

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

multimap

Непрочитанное сообщение Гость » 2011-03-11 7:08:01

Здравствуйте.
Начал изучать С++ - подскажите может можно как то более изящно все это сделать?

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

get(std::multimap<std::string, msg>* msg_pool, std::string id_thread)
{
	typedef std::multimap<std::string, msg>::iterator iterator;
	std::pair< iterator, iterator > pos;
	std::pair< iterator, iterator > pos_old;
	

	pos = _pool.equal_range( id_thread );
	
	pos_old = pos;

	for (; pos.first != pos.second; pos.first++ )
	{
		msg_pool->insert(std::make_pair(pos.first->first, pos.first->second));
	}

	_pool.erase(pos_old.first, pos_old.second);

....................................................................

Хостинговая компания 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: multimap

Непрочитанное сообщение Fastman » 2011-03-11 13:24:51

>>Начал изучать С++
и
>>typedef std::multimap<std::string, msg>::iterator iterator;

Плохо начал. Не усложняй себе жизнь.
И напиши для начала чего ты хочешь получить.
Главное в жизни здоровье и любовь, остальное я все куплю.

Гость
проходил мимо

Re: multimap

Непрочитанное сообщение Гость » 2011-03-11 15:05:43

Хочу из одной map перенести в другую, удовлетворяющие определенному условию

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: multimap

Непрочитанное сообщение Dambo » 2011-03-30 16:22:02

Нда прочитайте для начало описание того что вы используете... А именно по multimap и qual_range.
Вообще multimap хорош в кучах сортированных, в вашем коде вы перетаскиваете почему то 1 элемент и убиваете весь диапазон(думаю ваша ошибка)... если хотите так делать почему не vector?
Код который перетаскивает кучу удовлетворяющую ключу и грохает её:

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

get(std::multimap<std::string, msg>* msg_pool, std::string id_thread)
{
   typedef std::multimap<std::string, msg>::iterator iterator;
   std::pair< iterator, iterator > pos;   

   pos = _pool.equal_range( id_thread );

   msg_pool->insert(pos.first, pos.second);

   _pool.erase(pos.first, pos.second);

....................................................................
После erase, pos указывает на мусор перед употреблением его, надо присвоить другое ему, если он дальше по коду используется....