C++ 如何确定向量迭代器是否已到达向量的末尾?
我有一个整数向量,我希望我的迭代器指向我想要的数字(称之为“test”)C++ 如何确定向量迭代器是否已到达向量的末尾?,c++,vector,iterator,C++,Vector,Iterator,我有一个整数向量,我希望我的迭代器指向我想要的数字(称之为“test”) 然后停止迭代,而不在函数中指定我的向量?谢谢大家! 您可以采用标准库方法,向函数传递一对迭代器: template <typename Iterator> void foo(Iterator begin, Iterator end, typename std::iterator_traits<Iterator>::value_type test) { Iterator it =
然后停止迭代,而不在函数中指定我的向量?谢谢大家! 您可以采用标准库方法,向函数传递一对迭代器:
template <typename Iterator>
void foo(Iterator begin, Iterator end,
typename std::iterator_traits<Iterator>::value_type test)
{
Iterator it = begin;
....
if (iterator != end) { ... }
}
是,存在vec.end()。
您可以查看此参考
使用标准的algo std::查找,从
一对想法:
if(iter!=vec.end())
vector<int> vec;
void find(std::vector<int>::iterator& iter, std::vector<int>::iterator end, int test)
{
while (iter != end) {
if (*iter == test)
return;
++iter;
}
}
int main()
{
vector<int> a = { 2,3,4 };
std::vector<int>::iterator it = a.begin();
find(it, a.end(), 5);
}
vec;
void find(std::vector::iterator&iter,std::vector::iterator end,int test)
{
而(iter!=结束){
if(*iter==试验)
返回;
++iter;
}
}
int main()
{
向量a={2,3,4};
std::vector::iterator it=a.begin();
查找(it,a.end(),5);
}
无论如何,您可以在特定情况下使用
std::find
(),为什么不使用std::find()
?他希望迭代器指向数字(或结束()。这段代码(至少是第一个版本)不符合他的要求asked@MarcoA. 如果我读对了,他希望以某种方式返回一个指向该值的迭代器asked@MarcoA. 是的,但是他们在问如何在不将向量传递给函数的情况下获取结束迭代器。…
是找到数字迭代器的地方。也许你是对的。从目前的问题来看,我不能说。对我来说很好,抱歉打扰了:)通过引用传递迭代器似乎很奇怪。这当然不是标准库中采用的方法。我希望迭代器指向我想要的数字。我想他要么想修改迭代器,要么想得到一个迭代器作为回报。不过:使用std::find会更好。
auto it = std::find(vec.begin(), vec.end(), test);
if (it != vec.end()) { .... }
auto it = std::find(vector.begin(), vector.end(), value);
vector<int> vec;
void find(std::vector<int>::iterator& iter, std::vector<int>::iterator end, int test)
{
while (iter != end) {
if (*iter == test)
return;
++iter;
}
}
int main()
{
vector<int> a = { 2,3,4 };
std::vector<int>::iterator it = a.begin();
find(it, a.end(), 5);
}