我相信从C++11开始,erase
大多数容器的功能(例如std::vector
) 接受一个const_iterator
作为参数:
iterator erase (const_iterator position);
我的编译器(GCC 4.8 和 Clang 3.2,都使用 GCC libstdc++)仍然不允许我使用这样的函数,即使使用--std=c++11
.
这是编译器/libstdc++ 的错误,还是我做错了什么?这是示例代码:
#include <vector>
int main( )
{
std::vector<int> v;
v.push_back( 1 );
v.push_back( 2 );
v.push_back( 3 );
std::vector<int>::const_iterator i = v.begin();
while( i != v.end() ) {
i = v.erase( i );
}
return 0;
}
这个问题有记录here据报道,目前它只是部分实施。
CTRL + F with your browser and search for N2350
.
如果您使用的是 Linux,则可以构建一个开发版本libcxx
LLVM 项目中的库,您可以从中下载here;我不知道这是否可以解决您遇到的任何问题,但我建议将其作为替代方案libstdc++
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)