gpt4 book ai didi

c++11:使用 const_iterator 删除

转载 作者:可可西里 更新时间:2023-11-01 17:51:39 27 4
gpt4 key购买 nike

我相信从 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 使用浏览器搜索 N2350

如果您使用的是 Linux,则可以从 LLVM 项目构建 libcxx 库的开发版本,您可以从 here 下载该项目;我不知道这是否能解决您遇到的任何问题,但我建议将其作为 libstdc++ 的替代方案。

关于c++11:使用 const_iterator 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15987893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com