C++ Boost Range

Da Andreabont's Wiki.

Le librerie BOOST forniscono una serie di strumenti per trattare i range, altri strumenti simili possono essere trovati nella pagina C++ Boost Adapters

IRange

Con questo strumento è possibile iterare su una sequenza numerica.

#include <iostream>
#include <boost/range/irange.hpp>

int main() {

    for(int i : boost::irange(1,100000)){
        std::cout << i << "\n";
    }

    std::cout << std::endl;

}

Join

Con questo strumento è possibile iterare su più strutture dati in modo consecutivo.

#include <iostream>
#include <vector>
#include <list>
#include <boost/range/join.hpp>

int main () {
   
    std::vector<int> a = {1,2,3};
    std::list<int> b = {4,5,6};


    for(auto &i :  boost::join(a, b)) {
        std::cout << i << " ";
    }
    
    std::cout << std::endl;
    
}

Stampa:

1 2 3 4 5 6

Combine

Con questo strumento è possibile iterare su più strutture dati contemporaneamente.

#include <iostream>
#include <vector>
#include <list>
#include <boost/range/combine.hpp>

int main () {
   
    std::vector<int> a = {1,2,3};
    std::list<char> b = {'a','b','c'};


    for(const auto &pack :  boost::combine(a, b)) {
        int i;
        char j;
        boost::tie(i, j) = pack;
        std::cout << i << " - " << j << std::endl;
    }
        
}

Stampa:

1 - a
2 - b
3 - c