相关疑难解决方法(0)

用std :: set擦除删除习惯用与constness相关的错误失败

有人可以帮帮我吗?

编译此代码:

void test()
{
  std::set<int> test;
  test.insert(42);
  test.erase(std::remove(test.begin(), test.end(), 30), test.end());  // <- Line 33
}
Run Code Online (Sandbox Code Playgroud)

编译时生成以下错误:

$ make
g++ -c -Wall -pedantic-errors -Wextra -Wunused -Werror a_star.cpp
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h: In function `_FIter std::remove(_FIter, _FIter, const _Tp&) [with _FIter = std::_Rb_tree_const_iterator<int>, _Tp = int]':
a_star.cpp:33:   instantiated from here
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h:779: error: assignment of read-only location `__result.std::_Rb_tree_const_iterator<_Tp>::operator* [with _Tp = int]()'
make: *** [a_star.o] Error 1
Run Code Online (Sandbox Code Playgroud)

c++ stl set erase

17
推荐指数
2
解决办法
6187
查看次数

标签 统计

c++ ×1

erase ×1

set ×1

stl ×1