c ++ 11: стереть, используя const_iterator

Я считаю, что с 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;
}

8

Решение

Эта проблема задокументирована Вот и пока что это частичная реализация.

CTRL + F с вашим браузером и поиск N2350,

Если вы работаете в Linux, вы можете создать разрабатываемую версию libcxx библиотека из проекта LLVM, которую вы можете скачать с Вот; Я не знаю, решает ли это какие-либо проблемы, с которыми вы сталкиваетесь, но я предлагаю это в качестве альтернативы libstdc++,

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]