矢量<shared_ptr的<>&GT;清除错误</shared_ptr <>

时间:2013-11-18 09:15:12

标签: c++ vector shared-ptr

我有以下问题:

当我尝试清除 v_doc 并保留最后一个元素时,我收到以下错误:

  

C:\用户\ hdaher \文件\项目\ CR_Verification \ main.cpp中| 292 |错误:   没有匹配的呼叫功能   “的std ::矢量

     
    

:: clear(std :: vector&gt; :: iterator,__ nuu_cxx :: __ normal_iterator *,std :: vector&gt;&gt;)'|

  
#include <memory>
#include <iostream>

using namespace std;

int main()
{
     //Declare a vector of type Document
     vector<shared_ptr<Document>> v_doc;

      //Works ok
      v_doc.clear();

      //Error HERE!! Clearn V_doc and keep only the last element
      v_doc.clear(v_doc.begin(),v_doc.end()-1);
      return 0;

}

2 个答案:

答案 0 :(得分:4)

clear没有重载。只有clear没有参数可用。看起来您想要拨打erase

答案 1 :(得分:1)

使用.erase,同时检查条目迭代器是否有效:

if (v_doc.size() > 1)
    v_doc.erase(v_doc.begin(),v_doc.end()-1);