小编Tha*_*kis的帖子

在基于范围的循环中使用lambdas的初始化列表

使用gcc 4.9 -std = c ++ 14,我尝试制作一个lambdas向量:

vector<function<void ()>> v = {[]{cout << "foo";}, []{cout << "bar";}};
for (auto&& a: v) a();
Run Code Online (Sandbox Code Playgroud)

它运作得很好.然后我尝试将lambdas的初始化列表直接传递给基于范围:

for (auto&& a: {[]{cout << "foo";}, []{cout << "bar";}}) a();
Run Code Online (Sandbox Code Playgroud)

我得到了:

error: unable to deduce 'std::initializer_list<auto>&&' from '{<lambda closure object>main()::<lambda()>{}, <lambda closure object>main()::<lambda()>{}}'
Run Code Online (Sandbox Code Playgroud)

从错误消息的外观来看,我猜测它可能是因为" lambda闭包对象 "是内置语言术语,而不是std :: function的直接等价物(因此没有实际类型).

这个的深层原因是什么?此外,这可能是与实现相关的,还是由规范决定的行为?

c++ c++11

6
推荐指数
2
解决办法
808
查看次数

查找Python中的另一个列表中是否存在任何列表元素

问题是关于更快,即.更pythonic,测试迭代中的任何元素是否存在于另一个iterable中的方法.

我想要做的是:

if "foo" in terms or "bar" in terms or "baz" in terms: pass

但显然这种方式重复了'in terms'子句并使代码膨胀,特别是当我们处理更多元素时.所以我想知道在python中是否有更好的方法.

python list

3
推荐指数
1
解决办法
1672
查看次数

标签 统计

c++ ×1

c++11 ×1

list ×1

python ×1