Din*_*aur 3 c++ iterator vector
我有一个整数向量,我希望我的迭代器指向我想要的数字(称之为'test').
vector<int> vec;
void find(std::vector<int>::iterator iter, int test)
{
if((*iter)!=test){ ++iter;}
}
Run Code Online (Sandbox Code Playgroud)
这有时是有问题的,因为它可能会触及向量的末尾(如果'test'不在向量中)并且我将遇到错误.
无论如何,我可以执行类似的事情
if(iter!=vec.end())
Run Code Online (Sandbox Code Playgroud)
并停止迭代而不在函数中指定我的向量?谢谢!
您可以采用标准库方法并将一对迭代器传递给函数:
template <typename Iterator>
void foo(Iterator begin, Iterator end,
typename std::iterator_traits<Iterator>::value_type test)
{
Iterator it = begin;
....
if (iterator != end) { ... }
}
Run Code Online (Sandbox Code Playgroud)
然后你必须找出一个算法来找到指向值等于的元素的迭代器test.或者只是打电话给std::find你的功能.
auto it = std::find(vec.begin(), vec.end(), test);
if (it != vec.end()) { .... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2357 次 |
| 最近记录: |