如果 nth 超出范围 [first, last),我找不到任何与处理 std::nth_element(first, nth, last) 相关的官方定义。
为了弄清楚这一点,我对我的机器进行了一个玩具测试:
std::vector<int> arr{ 7, 3, 9, 6, 4 };
std::nth_element( arr.begin() + 1, arr.begin(), arr.end() );
for (int num : arr) {
printf("%d", num);
}
MSVC 在 vector 的 stl src 代码中给出断言失败,提示“vector iterator range transposed”。这是未定义的行为吗?
是的,如果
这意味着
nth
需要介于first
和之间last
。