C++ 访问向量的泛型迭代器

C++ 访问向量的泛型迭代器,c++,iterator,stdvector,C++,Iterator,Stdvector,我想知道我是否可以有一个通用迭代器来访问向量中的元素。我有不同的向量,但只有一个函数来显示元素。 如果我有一个泛型迭代器,那么我的方法就可以顺利运行。如果可能的话,请提出建议 点2、点3、线2、线3是4个不同的类。该方法接收我在另一个方法中创建的向量对象 template <typename VecObject> void Display(VecObject v) { if (filterCriteria == "Point2") { vector<P

我想知道我是否可以有一个通用迭代器来访问向量中的元素。我有不同的向量,但只有一个函数来显示元素。 如果我有一个泛型迭代器,那么我的方法就可以顺利运行。如果可能的话,请提出建议

点2、点3、线2、线3是4个不同的类。该方法接收我在另一个方法中创建的向量对象

template <typename VecObject>
void Display(VecObject v) {

    if (filterCriteria == "Point2") {
        vector<Point2>::iterator it;
    } else if (filterCriteria == "Point3") {

    } else if (filterCriteria == "Line2") {

    } else if (filterCriteria == "Line3") {

    }

    for ( it = v.begin(); it!=v.end(); ++it) {
        cout << *it << endl;
    }
}
模板
无效显示(矢量对象v){
如果(过滤标准==“点2”){
向量::迭代器;
}else if(filterCriteria==“点3”){
}else if(过滤器标准==“第2行”){
}else if(过滤器标准==“第3行”){
}
for(it=v.begin();it!=v.end();+it){

您可以通过
迭代器
常量迭代器
访问
向量的迭代器类型,因此无需切换:

template <typename VecObject>
void Display(const VecObject& v) {
    typename VecObject::const_iterator it;
    for ( it = v.begin(); it!=v.end(); ++it) {
        cout << *it << endl;
    }
}

C++使用C++的哪种版本?我想……但是我确信我没有使用C++。11@DenisErmolin我是C++新手,所以我不知道如何找到你的代码给我一堆错误。declared@user1571494很抱歉,我的输入错误是,
VectorObject
而不是
VectorObject
。我修复了它现在。
template <typename VecObject>
void Display(const VecObject& v) {
    typename VecObject::const_iterator it;
    for ( it = v.begin(); it!=v.end(); ++it) {
        cout << *it << endl;
    }
}
template <typename Iterator>
void Display(Iterator first, Iterator last) {
    for (Iterator it = first; it!=last; ++it) {
        cout << *it << endl;
    }
}
Display(v.begin(), v.end());
template<typename VectorObject>
void Display(VecObject v) {
   typename VectorObject::const_iterator it = v.begin();
   for (; it!=v.end(); ++it) {
      cout << *it << endl;
   }
}
int main()
{
  std::vector<int> intv(2, 5);
  std::vector<float> fv(2, 10);
  Display(intv);
  Display(fv);
  return 0;
}