【发布时间】:2016-09-30 13:03:24
【问题描述】:
有时我需要用户类型的 1 个元素的集合(或任何其他容器)并以这种方式创建它们:
boost::assign::list_of(typeVariable).convert_to_container<std::unordered_set<UserType> >()
有谁知道更漂亮的方法吗?
PS: 例如,我们有任何业务逻辑 API,它可以搜索元素,并采用一组(或另一个容器)类型进行选择。不同的用户可以访问不同的类型。我们也可以选择任何一种类型进行过滤,在这种情况下,我们将从过滤选项中选择一种类型。
所以我只想要在 1 行中编写代码的简单方法。我目前的版本是:
getElements(filter.type != UNDEFINED
? boost::assign::list_of(filter.type).convert_to_container<std::set<UserType> >()
: std::set<UserType>(allowedTypes.begin(), allowedTypes.end()))
【问题讨论】:
-
附带问题:为什么需要一组单个元素?您稍后会扩展该集合还是保留其中的单个项目?
-
这似乎是一个关于如何创建设计缺陷的问题。您似乎试图在一行代码中放置大量逻辑,这会降低该行的可读性,从而降低维护性。