[英]STL-Container styles and iterators that point to a specific type (C++)
我有一個容器類(稱為Atom),我想存儲Term類型的對象。許多STL容器構造函數的形式為Container(Iterator first, Iterator last)
,用一組元素初始化容器。
現在,我希望能夠將此表單用於我的Atom類,但我不確定如何從容器類中解開迭代器。 例如,目前我有:
class Atom {
public:
Atom(std::string str,
std::vector<Term>::const_iterator start,
std::vector<Term>::const_iterator end);
這只允許矢量迭代器。 我如何概括我采用的迭代器類型?
每當您需要對類型進行概括時,請考慮模板:
class Atom {
public:
template <typename ForwardIterator>
Atom(std::string str,
ForwardIterator start,
ForwardIterator end);
現在只需迭代范圍,無論它是什么。
您可以將構造函數聲明為自己的模板。 只需將start
和end
視為迭代器,如果它們支持該接口,它們將起作用。 不要擔心強制迭代器處理類型Term
。 如果復制構造函數可以將其轉換為Term
那么它將起作用。
構造函數可能如下所示:
template<typename I> Atom(std::string str, I start, I end);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.