gpt4 book ai didi

c++ - 在不创建 Functor 类的情况下使用 Functors 时出错?

转载 作者:行者123 更新时间:2023-11-28 06:23:14 27 4
gpt4 key购买 nike

我想在不创建仿函数类的情况下使用仿函数,但即使我将匹配的字符串存储在 foundVector 中,我的 foundVector 仍显示为空。

也告诉我有没有更好的方法来使用fucntors

我正在使用 Visual Studio 2013。这是我的演示代码:

输入:

#include<iostream>
#include<vector>
#include <string>

class Demo
{
public:
Demo(const std::string& string) :string_(string){};
void findFunctor(const std::string& string);
void operator()(const std::string &string);
void input();
private:
const std::string string_;
std::vector<std::string> storeVector;
std::vector<std::string> foundvector;
};

void Demo::input()
{
storeVector.push_back("test");
storeVector.push_back("hello");
storeVector.push_back("world");
storeVector.push_back("foo");
storeVector.push_back("hello");
}

void Demo::findFunctor(const std::string& string)
{
Demo object(string);
for (auto &elem : storeVector)
{
object(elem);
}
for (auto elem : foundvector)
{
std::cout << elem<<"\n";//Surprisingly Vector is empty and i want to know why??
}

}

void Demo::operator()(const std::string &string)
{
if (string == string_)
{
foundvector.push_back(string_);//Vector consists of two strings if matching string is found
}
}

int main()
{
Demo dObject("hello");
dObject.input();
dObject.findFunctor("hello");
return 0;
}

最佳答案

您正在修改由以下人员创建的对象的 foundVector:

 Demo object(string);

当你打电话时

 object(elem);

换行

for (auto elem : foundvector)

for (auto elem : object.foundvector)

得到正确的答案。

关于c++ - 在不创建 Functor 类的情况下使用 Functors 时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28995878/

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