使用迭代器模板类作为函数的参数

Using an iterator template class as a parameter to a function

本文关键字:函数 参数 迭代器      更新时间:2023-10-16
return Graph_iterator_Vertex(Vertexs.begin()); 

我不明白为什么这一行被称为复制构造函数,尽管我的构造函数带有参数。专门为此设计编写的参数构造函数参数。我发现的关于类似问题的只是使用typename。但这并没有解决我的问题。

struct Graph_iterator_Vertex
    {
    private:
        typename std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>::iterator iterator;
    public:
        Graph_iterator_Vertex(typename std::_Vector_const_iterator<std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>> iterator_)
        {
            iterator=iterator_
        }
    };
    const Graph_iterator_Vertex begin(void) const 
    {
        return Graph_iterator_Vertex(Vertexs.begin()); 
    }

哪里

std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>> Vertexs;

错误:

error C2440: <function-style-cast>: can not be converted std::_Vector_const_iterator<_Myvec>"in "Graph<Type_Of_Value_Vertex,Type_Of_Value_Edge>::Graph_iterator_Vertex" 

你应该使用

std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>::const_iterator

而不是

std::_Vector_const_iterator<std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>>

作为函数参数的类型。