簡體   English   中英

指向特定類型的STL-Container樣式和迭代器(C ++)

[英]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);

現在只需迭代范圍,無論它是什么。

您可以將構造函數聲明為自己的模板。 只需將startend視為迭代器,如果它們支持該接口,它們將起作用。 不要擔心強制迭代器處理類型Term 如果復制構造函數可以將其轉換為Term那么它將起作用。

構造函數可能如下所示:

template<typename I> Atom(std::string str, I start, I end);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM