我正在尝试声明 std::initializer_list
类型的迭代器,如 this answer 中所述。 .
但我总是收到此错误:
error: 'iterator' is not a member of 'std::initializer_list<int>'
如何声明 std::initializer_list
类型的迭代器?
例如以下代码将不起作用。另外,我使用的编译器支持新的标准草案。
int findCommon(std::initializer_list<int> nums)
{
std::initializer_list<int>::iterator it;
for (it = nums.begin() ; it != nums.end() ; ++it)
{
std::cout << *it << std::endl;
}
return 1;
}
最佳答案
您需要添加
#include <initializer_list>
对于这个例子也可能
#include <iostream>
还要确保您使用 -std=c++0x
切换到 g++。并且您至少需要 g++ 4.4 版本。 当使用 MacPorts 的编译器时,编译器称为 (错误的假设)。g++-mp-4.5
或 g++-mp-4.4
。
我注意到最近修复了一些与 GCC bugzilla 上的 initializer_list
相关的错误,所以我建议获取 GCC 的最新版本,4.5.1。因为使用这个版本时,我可以毫无问题地编译您的两个示例。
关于c++ - 列表初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3803780/