Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MRU list на std::list 
:(
    Опции темы
mrgloom
Дата 17.4.2012, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



надо реализовать MRU list, хорошая ли это идея делать это на std::list ?

по сути я так понимаю там одна операция, если появился новый элемент, то вставляем его в начало,
если обратились к какому либо элементу, то удаляем его с его места и вставляем его в начало.

возможно у кого то есть что то уже готовое.

Добавлено через 1 минуту и 38 секунд
+ наверно надо его лочить при каких либо его изменениях, как это можно сделать прямо в классе?
PM MAIL   Вверх
azesmcar
Дата 17.4.2012, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mrgloom @  17.4.2012,  09:44 Найти цитируемый пост)
надо реализовать MRU list, хорошая ли это идея делать это на std::list?

 smile 
только придется находить элемент каждый раз, а это линейный поиск, но иначе не выйдет.
Если сортировать по последнему использованию, то поиск по чему нибудь другому так или иначе будет линейный, или можно завести два контейнера, но не думаю, что в этом есть необходимость.

Цитата(mrgloom @  17.4.2012,  09:44 Найти цитируемый пост)
+ наверно надо его лочить при каких либо его изменениях, как это можно сделать прямо в классе? 

Зачем? Доступ происходит из нескольких потоков?

Это сообщение отредактировал(а) azesmcar - 17.4.2012, 10:02
PM   Вверх
mrgloom
Дата 17.4.2012, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



Цитата(azesmcar @  17.4.2012,  09:49 Найти цитируемый пост)
Зачем? Доступ происходит из нескольких потоков? 


да.


я не понимаю лок должен быть какого то типа? специальный для класса или для треда? или вообще можно булевскую переменную?

PM MAIL   Вверх
azesmcar
Дата 17.4.2012, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mrgloom @  17.4.2012,  10:06 Найти цитируемый пост)
я не понимаю лок должен быть какого то типа?

boost::mutex, std::mutex, critical section.

Цитата(mrgloom @  17.4.2012,  10:06 Найти цитируемый пост)
специальный для класса или для треда?

Для объекта.

Цитата(mrgloom @  17.4.2012,  10:06 Найти цитируемый пост)
или вообще можно булевскую переменную?

Нет. Можно разве что с помощью атомарных операций с этой переменной, тогда получится обыкновенный spin lock, но это не самая лучшая идея. Если есть компилятор с поддержкой нового стандарта, то используй std::mutex, если нет, но есть boost - бери boost::mutex, если и этого нет, но платформа windows - тогда Critical Section, если платформа *nix - тогда pthread_mutex. Также есть решения в Qt.


Это сообщение отредактировал(а) azesmcar - 17.4.2012, 10:59
PM   Вверх
volatile
Дата 17.4.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



В бусте я где-то видел готовое решение для быстрого (индексированного) MRU-списка.

Добавлено через 2 минуты и 16 секунд
А вот нашёл:
http://www.boost.org/doc/libs/1_41_0/libs/...rialization.cpp
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.