【问题标题】:Removing a pair from a vector of pairs [duplicate]从对的向量中删除一对[重复]
【发布时间】:2018-12-11 13:30:08
【问题描述】:

我有一个向量对

std::vector<int,double> lambda;

我想删除第 k 个元素,即

lambda.erase(&lambda[k]);
lambda.erase(lambda[k]);

这两种尝试都会引发不匹配的函数调用错误:

error: no matching function for call to ‘std::vector<std::pair<int, double> >::erase(__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, double> >, std::pair<int, double> >::value_type&)’
    lambda.erase(lambda[k]);

【问题讨论】:

  • std::vector&lt;int,double&gt;std::vector&lt;std::pair&lt;int, double&gt;&gt; 的错字?

标签: c++ vector stl erase


【解决方案1】:

std::vector::erase 期望迭代器作为它的参数;不是元素本身或指向元素的指针。

你可以

lambda.erase(lambda.begin() + k);

【讨论】:

  • 我没有意识到这与我们只有一个模板参数而不是一对模板参数的情况完全相同。我有一种(错误的)印象,即 & 以某种方式被重载并且会返回一个迭代器而不是一个指针。感谢您的回答。
猜你喜欢
  • 2015-02-03
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 2014-05-05
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多