11 Eylül 2017 Pazartesi

container

Giriş
Açıklaması şöyle
Boost.Container is a product of a long development effort that started in 2004 with the experimental Shmem library, which pioneered the use of standard containers in shared memory. Shmem included modified SGI STL container code tweaked to support non-raw allocator::pointer types and stateful allocators. Once reviewed, Shmem was accepted as Boost.Interprocess and this library continued to refine and improve those containers.
flat_set Sınıfı
Şu satırı dahil ederiz.
#include <boost/container/flat_set.hpp>
Constructor
V tipi nesneleri shared_ptr ile ilklendirmek için şöyle yaparız.
template <typename V, typename... Init>
auto make_shared_flat_set(Init&&... values) {
  return boost::container::flat_set<std::shared_ptr<V> > { 
    std::make_shared<V>(std::forward<Init>(values))...
  };
}
Şöyle yaparız.
auto fset = make_shared_flat_set<std::string>("one", "two", "three", "four",
  "Hungary");
begin metodu
Şöyle yaparız.
std::vector<sptr> random_access(fset.begin(), fset.end());
multimap Sınıfı
Tanımlama
Kendi key karşılaştırmak metodumuz için şöyle yaparız.
struct StrCompare
{
  bool operator()(const char* lhs, const char* rhs) const
  {
    return strcmp(lhs, rhs) < 0;
  }
};

typedef boost::multimap<const char*, Foo, StrCompare> MultimapType;
small_vector Sınıfı
Giriş
Şu satırı dahil ederiz
#include <boost/container/small_vector.hpp>
Açıklaması şöyle. Verilen eleman sayısının az olması durumunda optimizasyon için kullanılır. Elemanların heap yerine stack'te saklanmasını sağlar. Eğer eleman sayısı yaratılırken verilen üst sınırı geçerse, tüm veri std::vector'teki gibi heap'e taşınır.
small_vector is a vector-like container optimized for the case when it contains few elements. It contains some preallocated elements in-place, which allows it to avoid the use of dynamic storage allocation when the actual number of elements is below that preallocated threshold. small_vector is inspired by LLVM's SmallVector container. Unlike static_vector, small_vector's capacity can grow beyond the initial preallocated capacity.
small_vector is convertible to small_vector_base, a type that is independent from the preallocated element count, allowing client code that does not need to be templated on that N argument. small_vector inherits all vector's member functions so it supports all standard features like emplacement, stateful allocators, etc.
Constructor
Şöyle yaparız.
auto vec = boost::container::small_vector<int, 3> { 0, 1, 2};  

for (const auto& num : vec)
{
  std::cout <<
    "Index: " << num <<
    " Distance from vec[0]: " << (long)&num - (long)&vec[0] <<
    " Distance from vec: " << (long)&num - (long)&vec << "\n";
}
stable_vector Sınıfı
Bu sınıfın iterator'leri silme ve ekleme işleminde bile geçirsiz hale düşmezler.
Constructor
Şöyle yaparız.
boost::container::stable_vector<double> v;
vector Sınıfı
Şu satırı dahil ederiz.
#include <boost/container/vector.hpp>


Hiç yorum yok:

Yorum Gönder