gpt4 book ai didi

c++ - STL 正确使用 find_if() 打印出奇数

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:19 26 4
gpt4 key购买 nike

我怎样才能利用 STL 中的 find_if 算法从一个 vector 中查找并打印出奇数?

让我举个例子说明一下:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;


bool isOdd(int x)
{
return x%2 == 0;
}

int main(void)
{
int tab[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vector<int> myVec(tab, tab + sizeof(tab)/sizeof(tab[0]));
vector<int>::iterator it;

// Printing out all numbers

cout << "Vector contains the following numbers: " << endl;

for(it = myVec.begin(), it != myVec.end(), ++it)
{
cout << *it << ' ';
}

// An unsuccessful attempt to print out odd numbers while using find_if and while loop

vector<int>::iterator bound = find_if(myVec.begin(), myVec.end(), isOdd);

while(bound != myVec.end())
{
cout << *bound << ' ';
}

}

while 循环有什么问题?我想这是我代码的核心问题。

我正在分配 find_if 函数将返回给迭代器的任何值,然后我根本不知道如何从 vector 中挑选奇数值;(

最佳答案

问题是您没有在循环中推进迭代器:

while(bound != myVec.end())
{
cout << *bound << ' ';
bound = find_if(bound+1, myVec.end(), isOdd);
}

在 C++11 中你可以使用 std::next(bound)而不是 bound+1

此外,当数字为偶数时,您的 isOdd 返回 true。应该是

bool isOdd(int x) 
{
return x%2 != 0;
}

Demo.

关于c++ - STL 正确使用 find_if() 打印出奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26283726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com