in(std :: cin):それはどういう意味ですか?

Boostの最初の例では、 in(std :: cin)が使用されています。私は in() istream を取得し、ある種のイテレータを作成すると思います。しかし、私は詳細にそれを説明するC + +のドキュメントを見つけることができませんでした。あなたは私を見つけるのを助けてくれますか?



int main()
   using namespace boost::lambda;
   typedef std::istream_iterator in;
   in(std::cin), in(), std::cout << (_1 * 3) << " " );

3 答え

in is just a typedef for std::istream_iterator so the example is just calling std::for_each on a "range" defined by the two temporary iterators: std::istream_iterator(std::cin) and std::istream_iterator().

値で初期化された istream_iterator はストリームの単なる "end"イテレータです。

How std::cout << (_1 * 3) << " " works is more subtle. Because _1 comes from the boost::lambda namespace, it ensures that the operators * and then << from the boost::lambda namespace are used, rather than an operator<< that acts directly on a std::ostream. This way the whole expression becomes a lambda rather than (any part of it) being executed as a conventional expression at the call site of for_each.

私はラムダの概念をある段落で凝縮する方法を試したが好きです。私はかなり飛行機があることを確信しています - whoosh - OPの頭の上にありますが、試してみると誇りに思っていますし、プロセスで not-failing しています。
追加された 著者 sehe,
追加された 著者 Morten Kristensen,


typedef std::istream_iterator in;

したがって in(std :: cin)は、 std :: for_each で使用される stdin (cin)から読み込んだ整数の反復子であり、それらを3倍して出力します。



typedef std::istream_iterator in;

Thus, in(...) is the same as std::istream_iterator(...): it's calling the constructor for that type. There is a 1-argument constructor which accepts a std::istream, creating an iterator that represents the current point in that stream; and a 0-argument constructor creating an iterator that represents the end of any given stream. So std::for_each will iterate over every value provided by std::cin from now until it runs out.

std::istream_iterator takes a stream and provides an iterator over the ints in the stream, using operator>> to read them out of the stream.

しかし、私はそれを詳細に説明するC ++のマニュアルを見つけることができませんでした。

I don't know how you could possibly fail. I put std::istream_iterator into Google and the first result was which is pretty thorough, assuming you're already familiar with iterators. The next result is which makes another attempt to explain things and is also fully detailed. Next comes , similarly, which finally explicitly mentions operator>> instead of just talking about formatted I/O operations (which is what operator>> does). Next comes a page with some C++ example snippets, then a couple of StackOverflow questions where people were trying to do something similar, etc....

ご意見ありがとうございます。私は "in()"のドキュメントを見つけることができませんでした。
追加された 著者 iampat,