LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

Что такое гинератор простых чилес

google «простые числа». Для натуральных:

#include <iostream>
#include <iterator>

#include <boost/range/iterator_range.hpp>

class inc_iterator_t : public std::iterator<std::input_iterator_tag, int> {
    int n;
public:
    inc_iterator_t() : n(-1) {}
    inc_iterator_t(int n_) : n(n_) {}
    inc_iterator_t& operator++() { ++n; return *this; }
    /* Для простых -- правим тут ^ */
    bool operator!=(const inc_iterator_t& rhs) { return n != rhs.n; }
    int& operator*() {return n;}
    /* ... */
};

int main ()
{
    using namespace std;
    using namespace boost;

    for (auto const &n : make_iterator_range(inc_iterator_t(0), inc_iterator_t(5)))
        cout << n << endl;
}

а как ты собрался перебирать дерево я вообще не представлю.

http://en.wikipedia.org/wiki/Tree_traversal. Напрмер, с boost.filesystem можно сделать так:

#include <iostream>

#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>

int main()
{
    using namespace std;
    using namespace boost;
    using namespace boost::filesystem;

    for (auto const &x : make_iterator_range(recursive_directory_iterator("/usr"),
                                             recursive_directory_iterator()))
        cout << x.path() << endl;
}

Исходная версия quasimoto, :

Что такое гинератор простых чилес

google «простые числа». Для натуральных:

#include <iostream>
#include <iterator>

#include <boost/range/iterator_range.hpp>

class inc_iterator_t : public std::iterator<std::input_iterator_tag, int> {
    int n;
public:
    inc_iterator_t() : n(-1) {}
    inc_iterator_t(int n_) : n(n_) {}
    inc_iterator_t& operator++() { ++n; return *this; }
    /* Для простых -- правим тут ^ */
    bool operator!=(const inc_iterator_t& rhs) {return n != rhs.n; }
    int& operator*() {return n;}
    /* ... */
};

int main ()
{
    using namespace std;
    using namespace boost;

    for (auto const &n : make_iterator_range(inc_iterator_t(0), inc_iterator_t(5)))
        cout << n << endl;
}

а как ты собрался перебирать дерево я вообще не представлю.

http://en.wikipedia.org/wiki/Tree_traversal. Напрмер, с boost.filesystem можно сделать так:

#include <iostream>

#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>

int main()
{
    using namespace std;
    using namespace boost;
    using namespace boost::filesystem;

    for (auto const &x : make_iterator_range(recursive_directory_iterator("/usr"),
                                             recursive_directory_iterator()))
        cout << x.path() << endl;
}