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

Boost Intrusive - это библиотека, которая представляет некоторые навязчивые контейнеры миру C++. Интрузивные контейнеры - это специальные контейнеры, которые обеспечивают лучшую производительность и гарантии безопасности исключений, чем неинтрузивные контейнеры (например, контейнеры STL).
0 ответов

boost::intrusive clash с оператором + для перечисления

На моей машине Ubuntu 18.04.1 LTS с boost 1.65.1.0ubuntu1, следующий код // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // container.h #include <boost/intrusive/list.hpp> #include <boost/intrusive/rbtree.hpp> namesp…
09 окт '18 в 14:51
1 ответ

Как отсоединить элементы от контейнера boost::intrusive set

Я пытаюсь отделить элементы от набора boost:: intrusive и получаю ошибку подтверждения. когда я удаляю элемент после отсоединения его от контейнера. Класс наследуется от set_base_hook. класс fileXfer: public set_base_hook > 70 { Я использую функцию …
31 май '12 в 09:39
1 ответ

Повысить навязчиво получить следующий непосредственно от узла

Можно ли получить следующий узел / элемент непосредственно из узла / элемента? Вот так: struct Data{ boost::intrusive::list_member_hook<> node; Data* get_next(){ node.get_next() ??? } }
17 дек '18 в 13:11
1 ответ

Boost Intrusive unordered_set статическая функция-член возвращает неверный тип размера

Рассмотрим этот код, который успешно компилируется: #include <boost/intrusive/unordered_set.hpp> using namespace boost::intrusive; typedef unordered_set_member_hook<> Hook; struct Item { Hook hook; }; typedef unordered_set<Item, membe…
08 сен '17 в 06:47
1 ответ

Как стереть во время итерации boost::intrusive::list

Как я могу стереть элементы из boost::intrusive::list перебирая это? Следующий код завершается с ошибкой утверждения https://wandbox.org/permlink/nzFshFSsaIrvBiTa #include <iostream> #include <vector> #include <boost/intrusive/list.hp…
20 дек '17 в 22:49
1 ответ

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

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

Путаница в отношении одного элемента в большем количестве boost::intrusive контейнеров

Я не совсем понимаю, как возможно, что одни и те же элементы могут появляться в разных навязчивых контейнерах, в то время как сохранение производительности и использование памяти гарантируют, что boost::intrusive документация состояний. В документац…
03 мар '13 в 16:42
2 ответа

Boost Intrusive Hashtable

Кто-нибудь может привести простой пример использования Boost Intrusive Hashtable? Я пытался реализовать это, но мне немного не повезло. До сих пор void HashTableIndex::addToIndex(Message* message) { hashtable<MyMessageVector>::bucket_type base…
16 апр '12 в 05:24
1 ответ

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

Я завел интрузивный список наддува мьютексом, чтобы сделать его потокобезопасным для использования в качестве очереди производителя / потребителя. Но на Windows (MSVC 14) это очень медленно, после профилирования, 95% времени тратится без дела, в осн…
0 ответов

Как освободить память при использовании boost::intrusive_ptr в C++?

Я использую boost::intrusive_ptr следующим образом: void func() { boost::intrusive_ptr < MyObject > obj = new MyObject(); getStage()->addChild( obj ); } Если я правильно понимаю этот код - здесь я получаю утечку памяти, потому что я не осво…
28 ноя '15 в 02:10
1 ответ

Объединить два форсированных набора в C++?

У меня есть два мощных интрузивных набора, которые мне нужно объединить. я имею map_old.m_old_attributes увеличить интрузивный набор, который мне нужно объединить m_map_new_attributes повысить интрузивный набор void DataTest::merge_set(DataMap& …
0 ответов

Как скрыть Boost от навязчивого списка хуков?

В следующем коде: using namespace boost::intrusive; struct Data { int i; private: list_member_hook<> list_node; // How to make this work? }; using List = list< Data, member_hook< Data, list_member_hook<>, &Data::list_node> /…
0 ответов

Ускоренные навязчивые списки должны быть нестабильными при пересечении контекста прерывания или потока

Улучшенная навязчивая библиотека и, в частности, расширенный навязчивый список, является отличной реализацией для небольших встроенных систем, таких как процессор Cortex-M/R. Тем не менее, при добавлении элементов в список в пределах прерывания и пр…
1 ответ

Повысить навязчивый указатель

Я немного запутался насчет навязчивого указателя буста. Определение гласит: "Каждый новый intrusive_ptr Экземпляр увеличивает счетчик ссылок с помощью неквалифицированного вызова функции intrusive_ptr_add_ref, передав ему указатель в качестве аргуме…
19 окт '16 в 17:12
1 ответ

Как перенести узлы между двумя объектами boost::intrusive::slist

Допустимо ли передавать узлы между двумя boost::intrusive::slist<boost::intrusive::cache_last<true>> объекты? Что-то вроде следующего auto one = boost::intrusive::slist<Node, boost::intrusive::cache_last<true>>{}; auto two = …
28 июн '19 в 06:17
2 ответа

Почему функция push_back для навязчивого списка требует lvalue?

Учу навязчивый список: #include <iostream> #include <list> #include <boost/intrusive/list.hpp> struct DummyObject : public boost::intrusive::list_base_hook<>{ double price; DummyObject(const double a): price(a){ } }; using In…
1 ответ

Имеют ли навязчивые контейнеры все еще преимущества в производительности по сравнению с ненавязчивыми в современном C++?

Делать Boost.Intrusive контейнеры по-прежнему имеют преимущества в производительности по сравнению со стандартными ненавязчивыми (std::) в современном C++ (с семантикой перемещения, emplace_back, так далее)?
1 ответ

C++ Boost Intrusive List - Пример

Мне интересно узнать о навязчивых контейнерах Boost, и я хотел его протестировать. Я в основном скопировал пример с boost.org в главе "Как использовать Boost.Intrusive". Итак, мой код выглядит так: #include <iostream> #include <boost/intrus…
0 ответов

Boost Intrusive - режим автоматического отключения + постоянный размер времени

Мне интересно, почему вы не можете использовать автоматические перехватчики вместе с постоянным размером времени. Я получил свою информацию на boot.org в документах boost.intrusive в разделах "хуки автоматического отключения" и "объяснение концепций…
05 янв '20 в 22:51
1 ответ

Скрыть информацию в указателе - C++ (Boost.Intrusive)

В Boost я читал о маскировании информации в указатели для экономии памяти (здесь: https://www.boost.org/doc/libs/1_72_0/doc/html/intrusive/set_multiset.html, optimize_size). Как это возможно? Я где-то читал, что указатели используют только 48 бит, н…
26 янв '20 в 01:50