我正在学习 C++,所以我觉得这应该是一个非常简单的答案 - 但我似乎找不到它。所以,如果它是幼稚的,我提前道歉。
我有一个 std::vector<int>
的值,我试图找到 奇数 值的索引。
我正在遵循 here 中的代码:
(在下面重复):
// find_if example
#include <iostream> // std::cout
#include <algorithm> // std::find_if
#include <vector> // std::vector
bool IsOdd (int i) {
return ((i%2)==1);
}
int main () {
std::vector<int> myvector;
myvector.push_back(10);
myvector.push_back(25);
myvector.push_back(40);
myvector.push_back(55);
std::vector<int>::iterator it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
std::cout << "The first odd value is " << *it << '\n';
return 0;
}
此示例打印第一个奇数值。 我如何扩展它来为我提供 myvector
中每个奇数的索引值? ?这是正确的方法吗?
最佳答案
// find_if example
#include <iostream> // std::cout
#include <algorithm> // std::find_if
#include <vector> // std::vector
bool IsOdd (int i) {
return ((i%2)==1);
}
int main () {
std::vector<int> myvector;
myvector.push_back(10);
myvector.push_back(25);
myvector.push_back(40);
myvector.push_back(55);
std::vector<int>::iterator it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
std::cout << "ODD values are: " << std::endl;
while(it != myvector.end() ){
std::cout << *it << " in position " << (it - myvector.begin()) << '\n';
it = std::find_if (++it, myvector.end(), IsOdd);
}
return 0;
}
编辑:将 it+1
更改为 ++it
请参阅@David Rodríguez - 下面的 dribeas 评论。
关于C++ - 迭代从 find_if 返回的 std::vector<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533709/