在不创建 Functor class 的情况下使用 Functors 时出错?
Getting error while using Functors without creating a Functor class?
我想在不创建仿函数的情况下使用仿函数 class 但是我的 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)
获得正确答案。
我想在不创建仿函数的情况下使用仿函数 class 但是我的 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)
获得正确答案。