C++ 在<functional> <algorithm> 某个点使用 and 将向量拆分为 2

c++ using <functional> and <algorithm> to split a vector into 2 at a certain point

本文关键字:gt lt and 向量 拆分 functional algorithm C++      更新时间:2023-10-16

我需要在某个点将一个向量分成两部分。该点可以是任何字符串。现在我的想法是使用 find 找到该字符串并将其放入迭代器中。但是有没有办法从该迭代器获取索引,以便我可以使用它来拆分向量?http://www.cplusplus.com/reference/algorithm/partition_point/也会做同样的事情吗?我不需要代码,只需要正确方向的提示。

你不需要索引,有一个 std::vector 构造函数,它采用一对迭代器来复制要复制到向量的元素范围。

这意味着您可以简单地找到要拆分现有向量的元素,并在创建第一个向量时将其用作结束,在创建第二个向量时将其用作开头。

std::vector 的迭代器是随机访问的,这意味着你可以从一个迭代器中减去另一个迭代器来获得它们之间的距离。因此,将迭代器转换为元素的索引是从中减去vec.begin()的问题。

然后,您首先不需要索引,因为您可以从一对迭代器构造一个向量。

至于分区,它与拆分不同。分区只是重新排列序列,以便所有小于枢轴元素的元素都位于重新排列的序列中的枢轴元素之前。