我嘗試構建一個模板函數,該函數獲取vector
或array
(必須將未知容器傳遞給函數)的2個迭代器(begin
和end
)。未知容器,向量或數組的大小C++
我希望函數將檢查傳遞給它的容器的大小。 我的問題是:如果
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'](http://en.cppreference.com/w/cpp/iterator/distance)。 'begin == end' <=>'size == std :: distance(begin,end)== 0'。 – BoBTFish
'''begin'''等於''''end'''表示容器是空的 –
C++標準庫迭代器總是使用begin迭代器是包含性的,並且end迭代器是獨佔的(參考one-過去最末尾)。 –