8 Nisan 2017 Cumartesi

multi_index random_access Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/multi_index/random_access_index.hpp>
std::vector gibi gibidir. Şu satırı dahil ederiz.
namespace bi = boost::multi_index;
Tag
Şöyle yaparız.
boost::multi_index_container<
  Foo,
  bi::indexed_by<
    bi::random_access<bii::tag<struct ByRnd> >
  >
>;
begin ve end metodları
Şöyle yaparız.
auto pos = std::find_if(container.begin(), container.end(), 
                        [](Foo const* p) { return ... }
if(pos == container.end())
    // Not found.
rearrange metodu
set ile vector'ün aynı sırada olmasını sağlar.
ordered_unique yani set arayüzünü alırız.
// the set-like interface: (ordered_unique)
auto& as_set = set.get<set_idx>();
random_access yani vector arayüzünü alırız.
auto& random_access = set.get<ra_idx>();
Şöyle yaparız.
// put the random access in the same order as the set:
random_access.rearrange(make_ro_view(as_set).begin());


6 Nisan 2017 Perşembe

log expressions attr metodu

Giriş
Şu satırı dahil ederiz.
#include <boost/log/expressions.hpp>
#include <boost/log/attributes.hpp>
#include <boost/log/support/date_time.hpp>
Kolay kullanım için şu satırı dahil ederiz.
namespace expr = boost::log::expressions;
namespace attrs = boost::log::attributes;
or_default metodu
Şöyle yaparız.
//Write all records with "info" severity or higher
expr::attr<SeverityLevel>("Severity").
  or_default(SeverityLevel::INFO) >= SeverityLevel::INFO

5 Nisan 2017 Çarşamba

graph in_edge_at metodu

Giriş
İmzası şöyle
// Get the out-edge associated with vertex and in_edge_index
Traits::edge_descriptor
in_edge_at(Traits::vertex_descriptor vertex,
           Traits::degree_size_type in_edge_index,
           const Graph& graph);
Örnek
Elimizde şöyle bir grid olsun
using Grid = boost::grid_graph<3>;
using Traits = boost::graph_traits<Grid>;
using vertex_descriptor = Grid::vertex_descriptor;
using edge_descriptor = Grid::edge_descriptor;
Grid'i ilklendirelim
Grid grid({ { 4, 4, 4 } }, false);
Şöyle yaparız.
void print_in_edges(vertex_descriptor vd, Grid const& grid) {
    for (Traits::degree_size_type ei = 0; ei < in_degree(vd, grid); ++ei) {
        auto ed_left = in_edge_at(vd, ei, grid);
        std::cout << "Detected in edge: " << ed_left.first << " -> "
                  << ed_left.second << "\n";
    }
}


print_in_edges({{ 2, 2, 2 } }, grid);

graph out_edge_at metodu

Giriş
İmzası şöyle
// Get the out-edge associated with vertex and out_edge_index
Traits::edge_descriptor
out_edge_at(Traits::vertex_descriptor vertex,
            Traits::degree_size_type out_edge_index,
            const Graph& graph);
Örnek
Elimizde bir grid olsun
using Grid = boost::grid_graph<3>;
using Traits = boost::graph_traits<Grid>;
using vertex_descriptor = Grid::vertex_descriptor;
using edge_descriptor = Grid::edge_descriptor;
Bu grid'i ilklendirelim.
Grid grid({ { 4, 4, 4 } }, false);
Şöyle yaparız.
void print_out_edges(vertex_descriptor vd, Grid const& grid) {
  for (Traits::degree_size_type ei = 0; ei < out_degree(vd, grid); ++ei) {
    auto ed_left = out_edge_at(vd, ei, grid);
    std::cout << "Detected out edge: " << ed_left.first << " -> "
              << ed_left.second << "\n";
    }
}

print_out_edges({{ 2, 2, 2 } }, grid);


4 Nisan 2017 Salı

sort spreadsort

integer_sort
Şu satırı dahil ederiz.
#include <boost/sort/spreadsort/integer_sort.hpp>
Şöyle yaparız.
boost::sort::spreadsort::integer_sort(v.begin(), v.end());

1 Nisan 2017 Cumartesi

asio ip icmp socket Sınıfı

Giriş
Şu satırı dahil ederiz.
using boost::asio::ip::address_v6;
using boost::asio::ip::icmp;
Constructor
Şöyle yaparız
boost::asio::io_service ios;

icmp::endpoint lep (icmp::v6(), 0);

icmp::socket sock (ios, ep);
send_to metodu
Şöyle yaparız.
auto destination = address_v6::from_string("2601:XXX:XXX:XXX::202");
icmp::endpoint ep = boost::asio::ip::icmp::endpoint(destination, 0);

unsigned char icmppacket[40];
...
sock.send_to(boost::asio::buffer(icmppacket), ep);

asio ip icmp endpoint Sınıfı

Giriş
Şu satırı dahil ederiz.
using boost::asio::ip::address_v6;
using boost::asio::ip::icmp;
Constructor - address + port
Şöyle yaparız.
auto destination = address_v6::from_string("2601:XXX:XXX:XXX::202");
icmp::endpoint ep = boost::asio::ip::icmp::endpoint(destination, 0);
Constructor - protocol + port
Şöyle yaparız.
icmp::endpoint ep (icmp::v6(), 0);