【发布时间】:2019-12-24 18:35:49
【问题描述】:
我想从传递给函数的迭代器中确定标准容器类型(至少是关联的或线性的)。
我已经搜索了合适的迭代器特征和类型特征,但没有成功。
template <typename RangeIter, typename InputIter>
inline bool filter(RangeIter in_data, InputIter result)
{
...
/* determine the container types here - but how?!? */
std::copy_if(in_data.first, in_data.second, result, /* some predicate code here*/);
...
}
【问题讨论】:
-
你能举一个你试图解决的问题的例子吗?我不清楚你将如何使用这些信息。我怀疑真正的解决方案是您不需要确定这一点。这是一件好事,因为实际上我认为你做不到。
-
迭代器接口的重点是将容器与访问解耦。你能做的就是接受一个能做你想做的事情的函子。
-
@ttuna 我相信它仍然是正确的。编辑:我没有直接关闭问题的原因是重复并不能简单地区分关联容器和顺序容器。
-
@Bathsheba:不要仅仅因为您不同意关闭问题而错误地标记问题以防止有人将问题关闭为重复项。这不是标记的用途。
-
@Bathsheba:有关 C++ 的问题应始终标记为 C++。他们也可以有更具体的版本标签,但几乎没有问题应该用 just 一个特定于版本的标签来标记。此外,关于这个问题,概念不会改变任何东西,因为迭代器模型设计围绕着使算法对数据序列源的大多数特定细节一无所知。
标签: c++ iterator containers c++20