開始イテレータと終了イテレータの 2 つのイテレータを取得する特定のコンストラクタを作成する必要があります。
私はいくつかのコードとその作品を持っています:
#include <iostream>
#include <vector>
using namespace std;
template<typename T>
class A
{
public:
    T a[10];
    typename std::vector<T>::iterator itStart, itEnd;
    A(typename vector<T>::iterator itStart, typename vector<T>::iterator itEnd):itStart(itStart),itEnd(itEnd){}
    void see()
    {
        int i=0;
        while(itStart != itEnd)
        {
            cout<<*itStart<<endl;
            a[i] = *itStart;
            itStart++;
            i++;
        }
    }
};
template <typename Iterator>
double Sum( Iterator begin, Iterator end );
int main()
{
    cout << "Hello world!" << endl;
    vector<int> v;
    v.push_back(1);
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    class A<int> a(v.begin(),v.end());
    a.see();
    return 0;
}
しかし、コンストラクターの引数をすべての STL コンテナー (Set、List、Map など) と通常の配列 (通常のポインター) で機能させたいと考えています。では、一般的なテンプレートの方法で作成できますか? そんな感じ:
template<typename T>
class A
{
public:
    iterator<T> itStart, itEnd;
    A(iterator<T> itStart, iterator<T> itEnd):itStart(itStart),itEnd(itEnd){}
    void see()
    {
        while(itStart != itEnd)
        {
            cout<<*itStart<<endl;
            itStart++;
        }
    }
};
上記のコードが間違っていることは知っていますが、私の考えを説明したいと思います。
もちろん、コンストラクターをオーバーロードすることはできますが、私はそれが面倒です。STL コンテナーが多すぎます。その問題を解決するためのテンプレートの方法はありますか?