gpt4 book ai didi

c++ - 升压.Lambda : Insert into a different data structure

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:01 26 4
gpt4 key购买 nike

我有一个 vector,我想将其插入到一个 set 中。这是三个不同的调用之一(另外两个更复杂,涉及 boost::lambda::if_()),但解决这个简单的案例将帮助我解决其他问题。

std::vector<std::string> s_vector;
std::set<std::string> s_set;
std::for_each(s_vector.begin(), s_vector.end(), s_set.insert(boost::lambda::_1));

不幸的是,此操作失败并显示转换错误消息(尝试将 boost::lambda::placeholder1_type 转换为 std::string)。

那么……这有什么问题吗?

最佳答案

The error is really nasty, but boils down to the fact that it can't figure out which set::insert to use, since there's three overloads.

您可以通过指定指向您希望使用的函数的指针来帮助 bind 解决歧义:

typedef std::set<std::string> s_type;
typedef std::pair<s_type::iterator, bool>(s_type::*insert_fp)(const s_type::value_type&);
std::for_each(s_vector.begin(), s_vector.end(), boost::bind(static_cast<insert_fp>(&s_type::insert), &s_set, _1));

它不是很漂亮,但它应该可以工作。

关于c++ - 升压.Lambda : Insert into a different data structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/279601/

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