[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 10/16 19:40 / Filesize : 21 KB / Number-of Response : 53
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Oven/Egg総合スレ part1



11 名前:デフォルトの名無しさん [2009/01/08(木) 00:58:10 ]
ちょうどいい。そのうち書こうと思っていた。
もっとも単純な(?)使い方は、複数レンジを同時にfor eachすることだと思う。
#include <iostream>
#include <boost/foreach.hpp>
#include <pstade/oven/zipped.hpp>
int main() {
  using namespace pstade::oven;
  int const a[] = {1, 2, 3};
  long const b[] = {2, 4, 6};
  typedef boost::tuple<int, long> my_tupple_t;
  BOOST_FOREACH(my_tupple_t const& e, boost::make_tuple(a, b) | zipped) {
    std::cout << boost::get<0>(e) + boost::get<1>(e) << std::endl;
  }
  for (std::size_t i = 0; i < sizeof a / sizeof a[0]; ++i) {
    std::cout << a[i] + b[i] << std::endl;
  }
}
上のBOOST_FOREACHと下のforで同じことをやっている。
普通、同時に複数のレンジのfor eachはできないが、要素をtupleでまとめることでそれを実現している(eのこと)。
レンジを渡す側も、tupleで1つにまとめることで、複数のレンジを1つの | へ渡すことを可能にしている。

for eachだとあまり有難みは無いが、アルゴリズム関数で複数個のレンジまたはイテレータを渡せるようになるのが嬉しい。
例えば、STL <algorithm>のtransformは入力イテレータ1つのと2つのしかないが、
そんな用意がなくともzippedで束ねればいくつでも渡せるという具合。






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<21KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef