メンバーとしてstd::list
を含むC++クラスがあります。次に、別のコンテナの値をそのリストに挿入するために使用できるメソッドを追加します。関数パラメータにC++で使用される "汎用"イテレータ型はありますか?
template<class factType>
class BeliefSet
{
std::list<factType> m_List;
void SetFacts(??? IterBegin, ??? IterEnd)
{
m_List.insert(m_List.end(), IterBegin, IterEnd);
}
};
今私の質問は次のとおりです:私はそれがいずれかのイテレータ(または少なくとも最も一般的)を取ることができるように、との???
を置き換えるために何をしなければならないのlist
ようstd
コンテナ、vector
など、このような何か?私はstd::iterator<std::input_iterator_tag, factType>
で試しましたが、それはうまくいかないようです。これはまた、このように、コピーコンストラクタで動作する必要があることを
注:
const std::list<factType>& GetFacts() const
{
return m_List;
}
// Copy constructor.
explicit BeliefSet(const BeliefSet& Other)
{
auto facts = Other.GetFacts();
SetFacts(facts.begin(), facts.end());
}
テンプレートは、任意の入力を受け入れるようにするため、 'm_list.insert'はより複雑なテンプレートの控除をiteratorとして検証しますか? – ShadowRanger
[std :: iterator](http://en.cppreference.com/w/cpp/iterator/iterator)があります。それで、あなた自身のイテレータクラスを作成できましたか? –
なぜテンプレートを使用せず、パラメータに「InputIterator」という名前を付けますか? – NathanOliver