у меня проблема следующего рода:
вот код программы со всевозможными сокращениями:
-------------
#include ....
using namespace...
....
typedef multimap<int,char*,less<int> > MAP;
main{
MAP::iterator i;
....
....FindFileNext(hFind,&FindFileData)
{
....
map.insert( MAP::value_type(some_inveger_value,FindFileData.cFileName));
...
}
...
for(i=map.begin();i!=map.end();i++)
{
...
printf("%d %s\n",(*i).first,(*i).second);
...
}
}
----------------
так вот в чем проблема:
все время независемо сколько так было найдено имен ответ идет один и тот же
-----------------
1 asdasdasdasd
2 asdasdasdasd
................
N asdasdasdasd
-----------------
где "asdasdasdasd" имя последнего найденого файла.
я так понял что в *i.second содержытся указатель на ячейку памяти которая как видно всегда одна и таже я попробывал сделать вручную ради интереса
map.insert( MAP::value_type(some_inveger_value,"raz"));
i++;
map.insert( MAP::value_type(some_inveger_value,"dva"));
тогда результат правельный то что я и хотел:
------------
1 raz
2 dva
.....
------------
В чем проблема? может кто поможет, плиз...
проблемы с multimap!
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
спасибо всем
уже дошло, все гениальное просто %)

- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Потому, что в multimap ты запихиваешь указатель, а не саму строку. Указатель ведь один и тот же, а вот по этому адресу каждый раз разные строчки хранятся 
Выход: использовать что-то наподобие std::string или любого другого string-wrapper'а, который сочтёшь удобным для себя.

Выход: использовать что-то наподобие std::string или любого другого string-wrapper'а, который сочтёшь удобным для себя.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.