Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / std::map, как достать последний добавленный? / 15 сообщений из 15, страница 1 из 1
03.12.2007, 16:14:46
    #34982786
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
как получить указатель на последнюю добаленную пару std::map ?
делаю так:

Код: plaintext
iter = --map_general.end();

но видимо оно внутри пересортировывается, поэтому не всегда получаю то, что надо, если конечно причина в этом
...
Рейтинг: 0 / 0
03.12.2007, 16:27:04
    #34982829
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
Канечно сортируются.
...
Рейтинг: 0 / 0
03.12.2007, 16:29:57
    #34982837
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
сделал получение итератора сразу чере std::pair, но все же было бы неплохо узнать, есть ли возможность в любой момент получить итератор на последнюю добавленную пару?
...
Рейтинг: 0 / 0
03.12.2007, 16:49:12
    #34982923
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
Tubrikно все же было бы неплохо узнать, есть ли возможность в любой момент получить итератор на последнюю добавленную пару?

Только полным перебором и искать по своему идентификатору (признаку).
...
Рейтинг: 0 / 0
03.12.2007, 17:03:47
    #34982971
man_555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
Насчёт полного перебора - это сгоряча, сгоряча...

Если запоминаешь ключ, то можно пользоваться iterator find(const key_type& k)

ну, а если нет, то вот такое вполне сойдёт

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    std::map<int, int> m;
    m[ 0 ] =  7 ;
    
    std::map<int, int>::iterator ii = m.insert(m.begin(), std::pair<int, int>( 1 ,  8 ) );
    
    ii->second =  777 ;
    
    cout << m[ 1 ];

...
Рейтинг: 0 / 0
03.12.2007, 17:19:23
    #34983024
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
man_555Насчёт полного перебора - это сгоряча, сгоряча...

Согласен, малесь погорячился... :)
...
Рейтинг: 0 / 0
03.12.2007, 17:31:30
    #34983070
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
man_555Насчёт полного перебора - это сгоряча, сгоряча...

Если запоминаешь ключ, то можно пользоваться iterator find(const key_type& k)

ну, а если нет, то вот такое вполне сойдёт

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    std::map<int, int> m;
    m[ 0 ] =  7 ;
    
    std::map<int, int>::iterator ii = m.insert(m.begin(), std::pair<int, int>( 1 ,  8 ) );
    
    ii->second =  777 ;
    
    cout << m[ 1 ];


map::insert() возвращает пару pair<iterator,bool>
...
Рейтинг: 0 / 0
03.12.2007, 17:36:20
    #34983090
man_555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
blinded man_555Насчёт полного перебора - это сгоряча, сгоряча...

Если запоминаешь ключ, то можно пользоваться iterator find(const key_type& k)

ну, а если нет, то вот такое вполне сойдёт

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    std::map<int, int> m;
    m[ 0 ] =  7 ;
    
    std::map<int, int>::iterator ii = m.insert(m.begin(), std::pair<int, int>( 1 ,  8 ) );
    
    ii->second =  777 ;
    
    cout << m[ 1 ];


map::insert() возвращает пару pair<iterator,bool>

Ну и что?
...
Рейтинг: 0 / 0
03.12.2007, 17:37:24
    #34983098
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
blinded man_555Насчёт полного перебора - это сгоряча, сгоряча...

Если запоминаешь ключ, то можно пользоваться iterator find(const key_type& k)

ну, а если нет, то вот такое вполне сойдёт

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    std::map<int, int> m;
    m[ 0 ] =  7 ;
    
    std::map<int, int>::iterator ii = m.insert(m.begin(), std::pair<int, int>( 1 ,  8 ) );
    
    ii->second =  777 ;
    
    cout << m[ 1 ];


map::insert() возвращает пару pair<iterator,bool>

Tubrikсделал получение итератора сразу чере std::pair

я так и сделал, всем спасибо
...
Рейтинг: 0 / 0
03.12.2007, 17:55:40
    #34983170
man_555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
blindedmap::insert() возвращает пару pair<iterator,bool>

Эх давайте тогда уточним, что insert имеет три прототипа. Для возвращаемой пары совсем другой прототип: pair<iterator, bool> insert(const value_type& x), в моём же примере возвращается только итератор, так что намёка не понял...
...
Рейтинг: 0 / 0
03.12.2007, 19:23:20
    #34983411
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
Да никаких намеков, просто эта форма возвращает итератор без информации толи такое значение ключа уже было толи его только что добавили. Соотв нет гарантии что second той самый что добавляли
...
Рейтинг: 0 / 0
03.12.2007, 19:30:56
    #34983427
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
blindedДа никаких намеков, просто эта форма возвращает итератор без информации толи такое значение ключа уже было толи его только что добавили. Соотв нет гарантии что second той самый что добавляли

т.е. если он уже был (соотв. не добавился) то что вернет в second? разве не ранее добавленный second?
...
Рейтинг: 0 / 0
03.12.2007, 19:32:56
    #34983434
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
ранее
...
Рейтинг: 0 / 0
03.12.2007, 19:44:19
    #34983445
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
blindedранее

в моем случае это все равно достигает цели
...
Рейтинг: 0 / 0
03.12.2007, 19:52:56
    #34983463
man_555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::map, как достать последний добавленный?
А я что? Против? :-)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / std::map, как достать последний добавленный? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]