| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > MRU list на std::list |
| Автор: mrgloom 17.4.2012, 09:44 |
| надо реализовать MRU list, хорошая ли это идея делать это на std::list ? по сути я так понимаю там одна операция, если появился новый элемент, то вставляем его в начало, если обратились к какому либо элементу, то удаляем его с его места и вставляем его в начало. возможно у кого то есть что то уже готовое. Добавлено через 1 минуту и 38 секунд + наверно надо его лочить при каких либо его изменениях, как это можно сделать прямо в классе? |
| Автор: mrgloom 17.4.2012, 10:06 |
да. я не понимаю лок должен быть какого то типа? специальный для класса или для треда? или вообще можно булевскую переменную? |
| Автор: azesmcar 17.4.2012, 10:40 |
boost::mutex, std::mutex, critical section. Для объекта. Нет. Можно разве что с помощью атомарных операций с этой переменной, тогда получится обыкновенный http://en.wikipedia.org/wiki/Spinlock, но это не самая лучшая идея. Если есть компилятор с поддержкой нового стандарта, то используй std::mutex, если нет, но есть boost - бери boost::mutex, если и этого нет, но платформа windows - тогда http://msdn.microsoft.com/en-us/library/windows/desktop/ms682530(v=vs.85).aspx, если платформа *nix - тогда pthread_mutex. Также есть решения в Qt. |
| Автор: volatile 17.4.2012, 13:31 |
| В бусте я где-то видел готовое решение для быстрого (индексированного) MRU-списка. Добавлено через 2 минуты и 16 секунд А вот нашёл: http://www.boost.org/doc/libs/1_41_0/libs/multi_index/example/serialization.cpp |