了解以下 cpp 片段
Understanding the following cpp snippet
此代码段摘自比特币代码库。
struct CombinerAll
{
typedef bool result_type;
template<typename I>
bool operator()(I first, I last) const
{
while (first != last) {
if (!(*first)) return false;
++first;
}
return true;
}
};
这里用到这个
boost::signals2::signal<bool (CNode*), CombinerAll> ProcessMessages;
有哪位c++专家能帮我理解上面的(CombinerAll
and ProcessMessages
boost signal)是干什么的?问这个是因为 boost 库对我来说非常不直观。
来自函数:
if (!(*first)) return false;
如果 [first, last)
范围内的任何元素在取消引用 pointer/iterator/object 时计算为 false
,则函数 returns false
。否则,它 returns true
.
示例测试代码:
int main()
{
std::string sa = "abc";
std::vector<int> va = {1, 1, 1};
std::vector<int> vb = {1, 0, 2};
std::cout << std::boolalpha;
std::cout << CombinerAll()(sa.begin(), sa.end()) << std::endl;
std::cout << CombinerAll()(va.begin(), va.end()) << std::endl;
std::cout << CombinerAll()(vb.begin(), vb.end()) << std::endl;
return 0;
}
输出:
true
true
false
boost::signals2::signal
的文档可在 Boost website 找到。
至于ProcessMessages
是干什么的,得请教写那个代码的人
此代码段摘自比特币代码库。
struct CombinerAll
{
typedef bool result_type;
template<typename I>
bool operator()(I first, I last) const
{
while (first != last) {
if (!(*first)) return false;
++first;
}
return true;
}
};
这里用到这个
boost::signals2::signal<bool (CNode*), CombinerAll> ProcessMessages;
有哪位c++专家能帮我理解上面的(CombinerAll
and ProcessMessages
boost signal)是干什么的?问这个是因为 boost 库对我来说非常不直观。
来自函数:
if (!(*first)) return false;
如果 [first, last)
范围内的任何元素在取消引用 pointer/iterator/object 时计算为 false
,则函数 returns false
。否则,它 returns true
.
示例测试代码:
int main()
{
std::string sa = "abc";
std::vector<int> va = {1, 1, 1};
std::vector<int> vb = {1, 0, 2};
std::cout << std::boolalpha;
std::cout << CombinerAll()(sa.begin(), sa.end()) << std::endl;
std::cout << CombinerAll()(va.begin(), va.end()) << std::endl;
std::cout << CombinerAll()(vb.begin(), vb.end()) << std::endl;
return 0;
}
输出:
true
true
false
boost::signals2::signal
的文档可在 Boost website 找到。
至于ProcessMessages
是干什么的,得请教写那个代码的人