懂STL的大虾帮忙看几句代码
不懂 stl
我看到一个帖子里有人用stl写的代码
看不太明白
const char *filename= "abc.txt ";
fstream ifs(filename,ios::in);
if(!ifs.is_open())exit(1);
for_each(istream_iterator <string> (ifs),istream_iterator <string> (),My_Func()).print();
ifs.close();
这个for_each和里面的参数东东是啥意思啊 My_Func()好象是继承map的一个构造函数print 是 class My_Func的一个成员函数
能解释通俗点吗
[解决办法]
My_Func()构造一个My_Func对象
[解决办法]
是的,My_Func()构造一个My_Func对象。istream_iterator <string> (ifs),
istream_iterator <string> (),是fstream的迭代器。
[解决办法]
看见STL的 <> 就有点晕
[解决办法]
这个,你得学《STL源码剖析》,能看懂可算C++到了中级水平。
[解决办法]
这个,三言两语,说来你能明白么?
for_each(istream_iterator <string> (ifs),istream_iterator <string> (),
//前面两个参数是一个迭代器范围. 跟vector.begen(),vector.end()表示的范围意思
//相象. 可以看做整个文件
My_Func()
//第三个参数是函数对象,也就是一个重载了函数调用操作符的类的对象
//for_each函数会对输入范围内的每个元素应用该对象的operator()函数.
).print();
//for_each函数返回My_Func()对象的复本.然后调用它的成员.