gpt4 book ai didi

c++ - 指针 vector 上的 std::find()

转载 作者:太空狗 更新时间:2023-10-29 19:39:14 24 4
gpt4 key购买 nike

我想搜索一个指针 vector 并将指针与 int 进行比较.我最初的想法是使用 std::find()但我意识到我无法将指针与 int 进行比较.

例子:

if(std::find(myvector.begin(), myvector.end(), 0) != myvector.end()
{
//do something
}

myvector是一个 vector ,包含指向类对象的指针,即 vector<MyClass*> myvector . MyClass包含一个方法 getValue()这将返回一个整数值,我基本上想遍历 vector 并检查每个对象的 getValue()返回值来确定我做什么。

使用前面的例子:

if(std::find(myvector.begin(), myvector.end(), 0) != myvector.end()
{
//Output 0
}
else if(std::find(myvector.begin(), myvector.end(), 1) != myvector.end()
{
//Output 1
}
else if(std::find(myvector.begin(), myvector.end(), 2) != myvector.end()
{
//Output 2
}

它几乎就像一个绝对条件,如果我的 vector 中的任何指针的值为 0,我输出零,我输出 0。如果没有找到零,我会查看是否有 1。如果找到 1,我输出 1.等等等等。

最佳答案

改用 std::find_if()。其他答案显示了如何对谓词使用 lambda,但这仅适用于 C++11 及更高版本。如果您使用的是较早的 C++ 版本,则可以改为执行以下操作:

struct isValue
{
int m_value;

isValue(int value) : m_value(value) {}

bool operator()(const MyClass *cls) const
{
return (cls->getValue() == m_value);
}
};

...

if (std::find_if(myvector.begin(), myvector.end(), isValue(0)) != myvector.end()
{
//...
}

关于c++ - 指针 vector 上的 std::find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35490173/

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