gpt4 book ai didi

c++ - 如何克服以下关于 std::vector 的错误?

转载 作者:行者123 更新时间:2023-11-27 23:54:01 24 4
gpt4 key购买 nike

似乎vector<bool>不像通常的 vector 那样工作

auto it = find(flags.rbegin(), flags.rend(), false);

flags.erase(it+1, flags.end());

我想从末尾删除第一个 false 之后(严格)出现的元素。代码(仅第 2 行)产生一个长模板错误,最后一行是:

/usr/include/c++/5/bits/stl_bvector.h:1025:5: note: no known conversion for argument 1 from ‘std::reverse_iterator’ to ‘std::vector::const_iterator {aka std::_Bit_const_iterator}’

最佳答案

您在删除调用中混合了两种类型的迭代器,而它期望定义要删除的范围的两个兼容迭代器。

我想这就是你想要的:

 std::vector<bool> flags({false, true, false, true, true});
auto it = std::find(flags.rbegin(), flags.rend(), false);

flags.erase(std::next(it.base()), flags.end());

关于c++ - 如何克服以下关于 std::vector<bool> 的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43997329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com