簡體   English   中英

c ++ 11:使用const_iterator擦除

[英]c++11: erase using a 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編譯--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;
}

此問題在此處記錄 ,現在報告為部分實現。

用瀏覽器CTRL + F並搜索N2350

如果您使用的是Linux,則可以從LLVM項目構建libcxx庫的開發版本,您可以從此處下載; 我不知道這是否解決了您遇到的任何問題,但我建議將其作為libstdc++的替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM