gpt4 book ai didi

c++ - 在空容器上调用时 std::partition 的行为?

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:29 24 4
gpt4 key购买 nike

我在空容器 (std::list) 上调用 std::partition 时遇到问题。

std::list<int>::iterator end_it = std::partition(l.begin(), l.end(), SomeFunctor(42));
std::list<int>::iterator it = l.begin();

while (it != end_it)
{
// do stuff
}

如果列表为空,std::partition 返回一个不相等的迭代器到 l.end()。这是默认行为吗?

最佳答案

我是否遗漏了什么,或者不应该:

std::list<int>::iterator end_it = l.begin();

成为:

std::list<int>::iterator end_it = l.end();

但实际上我认为 partition() 的返回值对于一组空值是未定义的。返回值定义为:

An iterator i such that for any iterator j in the range [first, i), pred(*j) != false, and for any iterator k in the range [i, last), pred(*j) == false.

恕我直言,谓词不能应用于结束迭代器,因为它不可取消引用。

关于c++ - 在空容器上调用时 std::partition 的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900924/

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