如何从右到左查找向量中的元素
How to find element in vector from right to left
标准库中有find
函数,但它首先从左到右搜索匹配项,如何使用标准库从右到左查找元素?
std::vector<T> values;
std::find(values.begin(), values.end(), x); // searching from left to right
您可以使用 reserse_iterator:
std::find(values.rbegin(), values.rend(), x);
如果我对你的问题的理解是正确的,那么你试图找到的不是向量中值的 第一个 实例,而是最后一个?
std::find
采用各种迭代器(据我所知),因此您可以使用 rbegin()
和 rend()
来反向迭代向量。即:
std::vector<T> values;
auto it = std::find(values.rbegin(), values.rend(), x); // searches from right to left
当您确认您的 find
操作是否返回任何结果时,您必须小心检查 rend()
而不是 end()
。
标准库中有find
函数,但它首先从左到右搜索匹配项,如何使用标准库从右到左查找元素?
std::vector<T> values;
std::find(values.begin(), values.end(), x); // searching from left to right
您可以使用 reserse_iterator:
std::find(values.rbegin(), values.rend(), x);
如果我对你的问题的理解是正确的,那么你试图找到的不是向量中值的 第一个 实例,而是最后一个?
std::find
采用各种迭代器(据我所知),因此您可以使用 rbegin()
和 rend()
来反向迭代向量。即:
std::vector<T> values;
auto it = std::find(values.rbegin(), values.rend(), x); // searches from right to left
当您确认您的 find
操作是否返回任何结果时,您必须小心检查 rend()
而不是 end()
。