【发布时间】:2017-07-19 14:44:20
【问题描述】:
我尝试构建一个模板函数,该函数获取 vector 或 array 的 2 个迭代器(begin 和 end)(这必须是传递给函数的未知容器)。
我希望该函数检查传递给它的容器的大小。 我的问题是:如果
begin iterator等于end iterator是否意味着容器内有 0 个或 1 个元素? 我怎样才能 decalare 一些通用尺寸类型?如果我想通过将迭代器传递给排序函数来对未知容器进行排序,这会成为问题吗?我觉得它不会起作用。
这是我的模板函数草稿:
template<class P, class T>
T my_func(P beg, P end)
{
typedef typename ??? container_size;
if (beg == end)//first problem to determine if contains 0 or 1
elements
throw domain_error("some message if 0 elements");
sort(beg, end);// scond problem
}
【问题讨论】:
-
std::distance。begin == endsize == std::distance(begin, end) == 0. -
begin等于end表示容器为空 -
C++ 标准库迭代器总是使用开始迭代器包含且结束迭代器排他的方案(指的是过去的结束)。