我怎样才能达到迭代器指向的值?

时间:2013-06-22 16:45:01

标签: c++

我有一个某种类型的std :: list,例如list<FILE>。我需要for-each访问存储在其中的所有值,例如:

    list<FILE>::iterator iter;

    for(iter = Preferences::OpenFD.begin(); iter != Preferences::OpenFD.end(); iter++)
    {
        fclose(iter);
    }

这不起作用,因为它不是文件。我怎样才能达到这个指向的价值?

2 个答案:

答案 0 :(得分:2)

只需使用取消引用运算符:

fclose(*iter);
//     ^

另请注意,fclose需要FILE*,而不是FILE

使用C ++ 11,您可以使用基于范围的:

for(auto& elem: Preferences::OpenFD)
    fclose(elem);

或者你也可以使用std::for_each

std::for_each(Preferences::OpenFD.begin(), Preferences::OpenFD.end(), fclose);

答案 1 :(得分:0)

您需要取消引用迭代器才能访问FILE对象:

fclose(*it);