当前位置:  开发笔记 > 编程语言 > 正文

如何在排序向量中找到值(C++)

如何解决《如何在排序向量中找到值(C++)》经验,为你挑选了1个好方法。

我已经搜索了我的问题的解决方案,但没有找到答案.以下代码仅用于学习目的.我想在此向量中擦除值为3的所有元素:

std::vector v{1,1,2,2,2,3,3,4,4};

我试着像这样解决它:

//只是代码的摘录

iterator erase(T const& elem) {
    return v.erase(std::remove(v.begin(), v.end(), elem), v.end());
}

但是在我的测试用例中,我希望迭代器指向值4,但在我的代码中它指向值3.它只从我的向量中移除前3个.

如何删除值"3",以便迭代器返回4?

非常感谢您的帮助!



1> Kerrek SB..:

您的代码按预期工作:

std::vector v{1,1,2,2,2,3,3,4,4};

auto it = erase(3)
assert(v == std::vector({1,1,2,2,2,4,4});
assert(*it == 4);

返回的迭代器指向已删除的最后一个元素.

你只是错误地解释了返回值vector::erase.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有