gpt4 book ai didi

c++ - 如何绑定(bind)模板函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:53 24 4
gpt4 key购买 nike

大家好,你们这些 boost 专家!

我想在字符串 vector 中找到某个元素,忽略大小写:

#include <iostream>
#include <string>
#include <vector>
#include "boost/algorithm/string.hpp"
#include "boost/bind.hpp"

using std::string;
using std::vector;

bool icmp(const string& str1, const string& str2)
{
return boost::iequals(str1, str2);
}

int main(int argc, char* argv[])
{
vector<string> vec;
vec.push_back("test");

// if (std::find_if(vec.begin(), vec.end(), boost::bind(&boost::iequals<string,string>, "TEST", _1)) != vec.end()) <-- does not compile
if (std::find_if(vec.begin(), vec.end(), boost::bind(&icmp, "TEST", _1)) != vec.end())
std::cout << "found" << std::endl;

return 0;
}

到目前为止一切正常,但我想知道的是,是否可以去掉额外的函数 (icmp()) 并直接调用 iequals(模板函数)(就像在注释行中那样) .

提前致谢!

最佳答案

添加模板参数和默认语言环境参数在我的机器上有效。

if (std::find_if(vec.begin(), vec.end(), boost::bind(&boost::iequals<string,string>, "TEST", _1, std::locale())) != vec.end())
std::cout << "found" << std::endl;

编译器是VS2010。

关于c++ - 如何绑定(bind)模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8068393/

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