Giriş
Şu satırı dahil ederiz.
Template Parametreleri
Şöyledir. Block için açıklama şöyle
dynamic_bitset sınıfını template kullanan metodlara geçmek istersek şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Kaç tane 1 bit olduğunu döner. Şöyle yaparız.
Atanmış olan ilk biti bulur. Şöyle yaparız.
İmzası şöyle.
Elimizde iki değişken olsun.
Şöyle yaparız.
Şöyle yaparız.
Örnek ver
size metodu
Kaç bit uzunluğunda olduğunu belirtir. Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/dynamic_bitset.hpp>Eğer serialization ile kullanmak istersek şu satırı dahil ederiz.
#include <boost/dynamic_bitset/serialization.hpp>Bitleri saklamak için kendi içinde std::vector kullanır.
Template Parametreleri
Şöyledir. Block için açıklama şöyle
It allows you to specify a Block type, which is the underlying primitive used to represent a bunch of bits. You might want to change the block type depending on the platform you're on or depending on how much memory you're willing to use (e.g. a smaller Block type would result in less wasted memory if not all bits are significant).Ayrıa Allocator verebilme imkanı tanır.
template <typename Block, typename Allocator>
class dynamic_bitset {...}
Parametre Olarak Kullanmak dynamic_bitset sınıfını template kullanan metodlara geçmek istersek şöyle yaparız.
template <typename Block, typename Alloc>
void foo(dynamic_bitset<Block, Alloc>& bs) {
...
}
Constructor - LengthŞöyle yaparız.
boost::dynamic_bitset<> b (500);
Constructor - Length + Initial ValueŞöyle yaparız.
boost::dynamic_bitset<> b (8, 10); // 8 Bits, value 10
Constructor - iteratorŞöyle yaparız.
std::vector<uint32_t> v = ...;
boost::dynamic_bitset<uint_32_t> b (v.begin(), v.end());
count metoduKaç tane 1 bit olduğunu döner. Şöyle yaparız.
boost::dynamic_bitset<> b (500);
...
int c = b.count();
find_first metoduAtanmış olan ilk biti bulur. Şöyle yaparız.
typedef boost::dynamic_bitset<>::size_type size_type;
const size_type npos = boost::dynamic_bitset<>::npos;
size_type index = b.find_first();
Arama sonucunu kontrol etmek için şöyle yaparız.if (index != npos) {...}
Arama sonucunu kontrol etmek için şöyle yaparız.if (index != boost::dynamic_bitset<>::npos
) {...}
num_blocks metodu
Şöyle yaparız.
Atanmış olan ilk biti belirtilen indeksten başlayarak bulur. Şöyle yaparız.Şöyle yaparız.
template <typename Ar, typename Block, typename Alloc>
void save(Ar& ar, dynamic_bitset<Block, Alloc> const& bs, unsigned) {
size_t num_bits = bs.size();
std::vector<Block> blocks(bs.num_blocks());
to_block_range(bs, blocks.begin());
ar & num_bits & blocks;
}
find_next metodusize_type index = ...;
index = b.find_next (index);
operator [] metoduİmzası şöyle.
İlk metodu reference döndüğü bir değişkene atamak için şöyle yaparız.reference operator[](size_type pos);bool operator[](size_type pos) const;
boost::dynamic_bitset<>::reference operator()(const int pos)
{
return (*bitset)[pos];
}
operator ^ metoduElimizde iki değişken olsun.
boost::dynamic_bitset<> x(500);
boost::dynamic_bitset<> y(500);
Şöyle yaparız. Böylece "Hamming Distance" bulunabilir.boost::dynamic_bitset<> z(500);
z = x^y;
Hamming Distance için açıklama şöyleHamming Distance calculates the distance between two strings, however they have to be of equal length.İki string için şöyle yaparız.
int HammingDistance(String One, String Two)
{
if (One.length() != Two.length())
return -1;
int counter = 0;
for (int i = 0; i < One.length(); i++)
{
if (One.charAt(i) != Two.charAt(i)) counter++;
}
return counter;
}
operator << metoduŞöyle yaparız.
std::cout << "b = " << b << std::endl; // b = 00001010
resize metoduŞöyle yaparız.
template <typename Ar, typename Block, typename Alloc>
void load(Ar& ar, dynamic_bitset<Block, Alloc>& bs, unsigned) {
size_t num_bits;
std::vector<Block> blocks;
ar & num_bits & blocks;
bs.resize(num_bits);
from_block_range(blocks.begin(), blocks.end(), bs);
bs.resize(num_bits);
}
to_block_range metoduÖrnek ver
size metodu
Kaç bit uzunluğunda olduğunu belirtir. Şöyle yaparız.
std::cout << "Vector size: " << b.size();
// Vector size : 8
Hiç yorum yok:
Yorum Gönder