3

私は自分のコードでこのようないくつかの項目をかなり繰り返しています:

for (; i != end; ++i) {
   if(!restricted(*i))
   {
     doSomethingWithI(*i)
   }
}

おそらくstdまたはboostを使用して、これを行うより良い方法はありますか?

もう一つの例:

for (; i != end; ++i) {
   if(!restricted(*i))
   {
     Path p = _pathFactory->build(*i);
     Value v = _db->load(p);
     std::string output = _styler->style(v); 
     _output->write(output);
   }
}
4

2 に答える 2

2

ブースト レンジ アダプターの使用:

int main()
{
    const std::vector<int> v { 1,2,3,-99,4 };

    boost::copy(v | filtered([](int i) { return i > 0; }),
            std::ostream_iterator<int>(std::cout, "\n"));
}

Coliruでライブを見る

ブースト フェニックスも使用します。

int main()
{
    const std::vector<int> v { 1,2,3,-99,4 };

    boost::for_each(v | filtered(arg1 % 2 == 0), std::cout << arg1 << "\n");
}

それをColiruでライブで見る

于 2013-09-02T07:42:23.060 に答える