wierzę, że ponieważ C++ 11, funkcja erase
większości pojemników (np std::vector
) przyjmuje const_iterator
jako parametru:C++ 11: usunąć stosując const_iterator
iterator erase (const_iterator position);
nadal moim kompilatory (GCC 4,8 i Clang 3.2, oba używające GCC libstdC++) nie pozwolą mi używać takiej funkcji, nawet gdy kompiluję z --std=c++11
.
Czy jest to błąd kompilatora/libstdC++, czy też zrobiłem coś złego? To jest przykładowy kod:
#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;
}
Wydaje się, że jest to problem związany z implementacją Biblioteki Standardowej, a nie z samym kompilatorem. –
@Andy: tak, jeśli błąd nie jest mój, najprawdopodobniej jest to libstdC++. Wciąż jestem zaskoczony, że jest to problem z libstdC++ (lub z kompilatora, w każdym razie), ponieważ mogłem znaleźć wiele pytań o wymazywanie 'const_iterator', ale ** wszystkie ** z nich poprzedza C++ 11 .. – peoro