【问题标题】:vector<shared_ptr<>> Clear Error矢量<shared_ptr<>> 清除错误
【发布时间】:2013-11-18 09:15:11
【问题描述】:

我有以下问题:

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

C:\Users\hdaher\Documents\Project\CR_Verification\main.cpp|292|错误: 没有匹配的调用函数 'std::vector

::clear(std::vector >::iterator, __gnu_cxx::__normal_iterator*, std::vector >)'|

#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;

}

【问题讨论】:

    标签: c++ vector shared-ptr


    【解决方案1】:

    clear 没有重载。只有不带参数的 clear 可用。看起来你想打电话给erase

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-01
        相关资源
        最近更新 更多