关于两行C++代码的问题

bit*_*ion 3 c++ stl

对于以下两行C++代码

map<string, vector<size_t> >::iterator beg = mapper.begin();
vector<size_t>& indics = (*beg).second;
Run Code Online (Sandbox Code Playgroud)

如何理解他们想要什么来实现的,在特定的,有什么事了&,并*在第二行代码是什么意思?

K-b*_*llo 5

map<string, vector<size_t> >::iterator beg = mapper.begin();

我们有一个map映射stringvector<size_t>.根据,我们得到了iterator地图中的第一个元素,即具有较小键值的元素std::less<string>.

vector<size_t>& indics = (*beg).second;

或者是什么一样

vector<size_t>& indics = beg->second;

我们得到键值对中的第二个值,即我们得到vector<size_t>地图中的第一个元素.我们保留一个非const引用,所以我们可以修改它的值.