5 Ekim 2017 Perşembe

multi_index sequenced Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/multi_index/sequenced_index.hpp>
Tanımlama - tag kullanmayan
Şöyle yaparız.
namespace bmi = boost::multi_index; 

using Index = bmi::multi_index_container<char, 
  bmi::indexed_by<
    bmi::sequenced<>,
    bmi::ordered_unique<bmi::tag<struct unique>, bmi::identity<char> >
  >
> ;
Bu indeks'e şu şekilde erişmeyeceğim anlamına gelir.
auto& u = container.get<unique>();
Tanımlama - tag kullanan
Şöyle yaparız.
// multi index tags
struct seq  {};

typedef boost::multi_index::multi_index_container<
  MyClass,
  boost::multi_index::indexed_by<
    boost::multi_index::sequenced<boost::multi_index::tag<seq> >,
    ...
  >
> my_list;  
C++11 kullansak ta kullanmasak ta bence indeksler için typedef yapmak iyi bir fikir.
typedef boost::multi_index::index<my_list, seq>::type seq_index;
push_back metodu
Bir pair döner.

push_front metodu
Bir pair döner.
std::pair<typename my_list::iterator, bool> ret = mylist.push_front(item);
if (!ret.second) {
  //item exists
  ...
}
pop_back metodu
Şöyle kullanılır.
mylist.pop_back();

pop_front metodu
Örnek ver

relocate
Elemanı başka bir konuma taşırlar. LRU Cache örneğinde eleman en sona taşınıyor.

Hiç yorum yok:

Yorum Gönder