Описание тега intrusive-containers

2 ответа

Что означает аргументы шаблона этого типа - `ClassA<T> T:: * ELEM`?

Я недавно сталкивался с этим кодом в контексте навязчивых списков: template&lt;typename T&gt; struct Node{ T *next; T *prev; Node(): next(nullptr), prev(nullptr){} }; /* * Intrusive doubly-linked-list * * */ template&lt;typename T, Node&lt;T&gt; T::…
1 ответ

Должен ли класс быть стандартным типом макета, чтобы быть уверенным в смещениях памяти его членов?

Допустим, я хочу написать навязчивый список. У меня есть шаблон класса навязчивого списка, который принимает тип и указатель на член для использования в качестве узла. Это выглядит примерно так: // This needs to be a member of anything the intrusive…
26 май '15 в 05:08
2 ответа

Пытаюсь выучить boost::intrusive Q2

Если я раскомментирую эти //BaseList baselist; //MemberList memberlist; за пределами цикла и закомментируйте те, которые внутри цикла, он выходит из строя. Мне нужно иметь возможность иметь базовый список (и список участников) вне любого цикла. Как …
11 ноя '14 в 05:02
1 ответ

Boost::IntrusiveList с общими указателями

Поэтому я пишу систему обработки событий, используя FastDelegate<> и библиотеку наддува. Мне нужно настроить очередь общих указателей на данные событий, а также список FastDelegate> для слушателей. Так вот в чем проблема. Навязчивый список и очередь…
1 ответ

Навязчивый список unique_ptrs?

У меня есть программа, которая является многопоточной и содержит навязчивый список объектов. Мне нужно передать объекты в этом списке нескольким потокам, но только один поток когда-либо будет владеть объектом за раз, что означает, что мне не нужен э…
07 окт '10 в 09:15
2 ответа

Использование BOOST_FOREACH с постоянным навязчивым списком

Рассмотрим следующий код для перебора навязчивого списка с помощью макроса BOOST_FOREACH: #include &lt;boost/foreach.hpp&gt; #include &lt;boost/intrusive/list.hpp&gt; typedef boost::intrusive::list&lt; boost::intrusive::list_base_hook&lt;&gt; &gt; M…
31 май '12 в 15:16
2 ответа

Односвязный список Windows (_SINGLE_LIST_ENTRY)

Я просто делаю отладку в аварийном дампе Windows 7, и я наткнулся на односвязный список, который я не могу полностью понять. Вот вывод из WinDBG: dt _GENERAL_LOOKASIDE_POOL fffff80002a14800 -b .... 0x000 SingleListHead: _SINGLE_LIST_ENTRY +0x000 Nex…
1 ответ

Присвоение нового значения итератору навязчивого контейнера

Во время работы над интрузивным контейнером splay_set необходимо сбросить локальные переменные-члены итератора. Пожалуйста, смотрите пример кода ниже - #include &lt;boost/intrusive/splay_set.hpp&gt; using namespace boost::intrusive; class Obj { publ…
27 ноя '14 в 07:49
4 ответа

В чем преимущество встраивания связанного списка в структуру данных?

Читая о структурах данных ядра во FreeBSD, я наткнулся на MBuf, MBuf содержит указатель на следующий MBuf в цепочке MBuf, реализующий связанный список. каждый MBuf сам по себе также содержит данные, относящиеся к этому узлу в связанном списке. Я бол…
04 мар '17 в 17:35
2 ответа

Перехватчики членов и базовые перехватчики в навязчивых структурах данных

Я кодирую навязчивую структуру данных и задаюсь вопросом, использовать ли базовые или членские хуки. Поскольку код будет вызываться много раз, мой вопрос касается производительности и степени, в которой компиляторы могут встроить такой код. Базовые …
1 ответ

Могу ли я создать резервную навязчивую коллекцию, используя пул повышения в качестве хранилища?

Я понимаю, что расширенные навязчивые коллекции в конечном итоге хранят ссылки на объекты и, таким образом, для объектов требуется собственное управление временем жизни. Мне было интересно, могу ли я просто использовать Boost Pool для управления эти…
1 ответ

Повысить навязчивый unordered_set, прерванный в 1.48 с GCC в режиме C++11

Unordered_set в Boost Intrusive не работает, если вы выполняете ванильную установку Fedora 17, которая поставляется с GCC 4.7 и Boost 1.48, и используете режим C++11. На Fedora 16, которая поставляется с GCC 4.6.2 и Boost 1.47, это работает. Это нар…
03 май '12 в 23:43
1 ответ

Пытаюсь выучить boost::intrusive Q5

У меня есть следующая программа. Я построил это с gcc-4.9.2 под linux. Мои вопросы: 1) Почему хеш-таблица кажется отсортированной в первый раз, но теряет сортировку после удаления элементов из значения? 2) Как мне пройти хеш-таблицу по ключу и сказа…
23 мар '15 в 02:02
1 ответ

Как клонировать крючок с помощью Boost Intrusive?

Я изучаю Boost Intrusive. У меня проблема при попытке скопировать контейнер STL. Я использую std:: vector. Содержит элементы класса list_base_hook в режиме auto_unlink но информация об узле (is_linked()) теряется при вызове конструктора копирования.…
10 дек '14 в 11:45
2 ответа

Контейнеры C++ STL непригодны для использования без исключений, что мы можем с этим поделать?

Предполагаемый идеал C++ - "то, за что вы платите". Однако это может быть довольно изнурительным из-за исключений и их повсеместного использования в STL. Прежде чем кто-то скажет "просто включите исключения", жизнь не настолько щедра к средам програ…
25 мар '12 в 04:31
3 ответа

Круговая зависимость C++ с навязчивым связанным списком

Я реализовал этот навязчивый связанный список: template &lt;class Entry&gt; struct LinkedListNode { Entry *next; Entry *prev; }; template &lt;class Entry, LinkedListNode&lt;Entry&gt; Entry::*NodeMember&gt; class LinkedList { public: void init (); bo…
1 ответ

std::forward_list - стирание с сохраненным итератором

Я пытаюсь сохранить глобальный список экземпляров определенного (базового) класса, чтобы я мог отследить их, просматривая этот глобальный список в любое время. Я считаю, что наиболее правильный способ решения этой проблемы - навязчивый список. Я слы…
2 ответа

Почему там нет boost::intrusive::map?

В расширенной документации ( http://www.boost.org/doc/libs/1_55_0/doc/html/intrusive.html) говорится, что навязчивые контейнеры реализованы для list (оба одинарные / двойные связи), set а также multiset, Я не мог найти реализацию для карты. Есть ли …
13 май '14 в 14:00
3 ответа

C++ CRTP и доступ к вложенным typedefs из базы

редактировать: я помещу здесь ссылку на github, когда закончу изменять дизайн для всех, кому это интересно. Фон Я заменяю boost::intrusive, intrusive_setс моей собственной реализацией в виде 64-битных скомпилированных наборов вторжений 3 x 8-байтовы…
13 ноя '11 в 19:01
1 ответ

Повысить навязчивый своп

У меня класс объявлен как class MyClass : public list_base_hook&lt;link_mode&lt;normal_link&gt;&gt;, У меня также есть список, объявленный как list&lt;MyClass&gt; global_list_MyClass, Я вставляю 10 узлов в global_list_MyClass используя цикл. Моя цел…