C++11 使用引用初始化迭代器

C++11 使用引用初始化迭代器,c++11,iterator,C++11,Iterator,在C++11中:我想从引用创建一个迭代器。这是从给定位置而不是从begin()开始创建循环 我试过: typename std::vector<T>::iterator ref2iter(T& x) { return &x ; } ; typename std::vector::迭代器ref2iter(T&x) { return&x; } ; 但有人回答说: conversion from ‘double*’ to non-scalar type ‘std

在C++11中:我想从引用创建一个迭代器。这是从给定位置而不是从begin()开始创建循环

我试过:

typename std::vector<T>::iterator ref2iter(T& x)
{
    return &x ;
} ;
typename std::vector::迭代器ref2iter(T&x)
{
return&x;
} ;
但有人回答说:

conversion from ‘double*’ to non-scalar type ‘std::vector<double, std::allocator<double> >::iterator {aka __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >}’ requested
请求从“double*”转换为非标量类型“std::vector::iterator{aka _ugnu\u cxx::_normal\u iterator}”

虽然
std::vector::iterator
T*
都可以取消对T的引用,但它们是不同的类型。。。迭代器是一个实现特定++、--和其他运算符的对象,而
T*
只是一个内置指针类型。此外,如果您只想从某个位置获取迭代器,实际上可以使用
it=vector.begin()+n
,我需要做反向操作:指针算法,以了解从起点到滴度器工具的距离-运算符已经存在。