2010-09-28から1日間の記事一覧

pstade::oven::copied

連続した数値の配列の初期化の続き。 namespace oven = pstade::oven; std::vector<int> array = boost::irange(0, 10)|oven::copied; boost::for_each(array, [](int n){ std::cout << n; }); 出力 0123456789 こっちの方がスマート! コメントありがとうござい</int>…

boost::irange

基本的な使い方は、boost::counting_range と同じ。 違う点は、ステップの設定ができる。 boost::irange(0, 5); // {0, 1, 2, 3, 4} bosst::irange(0, 10); // {0, 2, 4, 6, 8} ただし、ここで注意する点がある。 boost::for_each(boost::irange(0, 9, 2), […

連続した数値の配列の初期化

C++

こんなことがしたい。 array = [1..10] こうですか、分かりません>< template<typename T> std::vector<T> make_counting(const T& first, const T& last){ std::vector<T> result(last - first); boost::copy(boost::irange(first, last), result.begin()); return result; </t></t></typename>…

ラムダは便利だな

今までスコープの外の変数を使う場合は、BOOST_FOREACH を使っていたんですが、 int sum = 0; BOOST_FOREACH(int n, boost::counting_range(0, 10)){ sum += n; } [&]にすればスコープの外をキャプチャ出来るんですね。 int sum = 0; boost::for_each(boost:…

テキストファイル内で使われている文字を数える 続き

昨日の続き。 ワイド文字版。 #include <iostream> #include <map> #include <boost/range/algorithm/for_each.hpp> #include <boost/range/adaptor/sliced.hpp> #include <boost/range/as_array.hpp> #include <pstade/oven/file_range.hpp> int main(){ namespace oven = pstade::oven; namespace adaptors = boost::adaptors; auto fr…</pstade/oven/file_range.hpp></boost/range/as_array.hpp></boost/range/adaptor/sliced.hpp></boost/range/algorithm/for_each.hpp></map></iostream>