История изменений
Исправление 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;
}