通过迭代器访问另一个向量内的向量元素?

Dan*_*oof 1 c++ iterator vector elements

std::vector< std::vector<coords> >::iterator iter;
for(iter = characters.begin(); iter != characters.end(); iter++) 
{
    std::vector<coords>* cha = iter; // doesn't work.
}

// does work.
std::vector<coords>* character = &characters.at(0);
coords* first = &character->at(0);
Run Code Online (Sandbox Code Playgroud)

我不明白为什么.它不应该是一个指向它的容器应该"包含"的类型元素的指针吗?

有谁愿意阐明这一点?

通过不起作用我的意思是:

error C2440: 'initializing' : cannot convert from 'std::_Vector_iterator<_Ty,_Alloc>' to 'std::vector<_Ty> *'
Run Code Online (Sandbox Code Playgroud)

这对我来说没有多大意义.

MSN*_*MSN 6

迭代器是一种可以像指针一样被解引用的类型,即它具有显式operator*()operator->().它不一定是指针.

因此,&*iter如果您想获取向量的地址,请使用.