Boost C++ Libraryのお勉強その3

Boost.CircularBuffer

いわゆるリングバッファ。

#include <iostream>
#include <boost/circular_buffer.hpp>

int main(void)
{
    boost::circular_buffer<int> cb(3);
    cb.push_back(0);
    cb.push_back(1);
    cb.push_back(2);
    std::cout << cb[0] << cb[1] << cb[2] << std::endl;
    cb.push_back(3);
    std::cout << cb[0] << cb[1] << cb[2] << std::endl;
    return 0;
}
012
123

Boost.Compatibilty

brokenなcompilerやlibraryのための互換性確保について色々。あまり興味ないので飛ばす。

Boost.CompressedPair

empty base-class optimizationをしてくれるpair。うれしい人にはうれしいのかもしれない。

#include <iostream>
#include <utility>
#include <boost/compressed_pair.hpp>

class Empty {};


int main(void)
{
    std::cout << sizeof(std::pair < Empty, long long >) << std::endl;
    std::cout << sizeof(boost::compressed_pair < Empty, long long >) << std::endl;
    return 0;
}
16
8