読者です 読者をやめる 読者になる 読者になる

oven::zipped

C++

zippedはリストのタプルを綴じ合わせるRangeアダプタです。


以下の場合では、{1,2,3}と{4,5,6}を要素に持つタプルにzippedを適用すると
{(1 4), (2 5), (3 6)}というタプルのリストになります。

#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <pstade/oven/initial_values.hpp>
#include <pstade/oven/zipped.hpp>
#include <pstade/oven/io.hpp>

using namespace pstade::oven;

int main()
{
    std::cout <<
        (boost::make_tuple(initial_values(1, 2, 3), initial_values(4, 5, 6))|zipped) 
    << std::endl;
}
{(1 4),(2 5),(3 6)}


リストの要素数が合ってない場合は無限ループして落ちるようです。

#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <pstade/oven/initial_values.hpp>
#include <pstade/oven/zipped.hpp>
#include <pstade/oven/io.hpp>

using namespace pstade::oven;

int main()
{
    std::cout <<
        (boost::make_tuple(initial_values(1, 2, 3), initial_values(4, 5, 6, 7))|zipped) 
    << std::endl;
}
{(1 4),(2 5),(3 6),(4 7),(5 -858993460),(6 -858993460),(7 1244628),(-858993460 1244640),(-858993460 1244640),(1244628 1244656),(1244640 -858993460),(1244640 -858993460),(1244656 -858993460),(-858993460 -858993460),(-85899340 -858993460)...


【参照】
pstade::oven::zipped