std::list<std::vector<unsigned long> >::const_iterator it;
// ...
std::vector<unsigned long> non_mf;
non_mf.reserve(it->size());
上面it->size()
的含义是什么?迭代器的大小,这意味着什么?
当延迟时,iterator
是指所指向对象的方法和字段。在您的情况下,它是list of vectors
的iterator
,因此在延迟时,将引用到列表中的向量之一,因此您询问该向量的大小。
如果迭代器没有调用成员函数,因为您没有使用运算符.
。
运算符->
是间接成员访问运算符。它通过左手操作数进行间接寻址,并访问间接寻址结果的成员。当你间接通过迭代器时,你会得到迭代器指向的对象,所以你要做的是调用指向对象的成员函数,在这种情况下,它是一个向量。
可以使用一元间接运算符*
和非间接成员访问运算符.
:获得相同的结果
(*(it)).size()
这不像使用运算符->
那样可读,也不像使用运算符那样漂亮,这应该解释了后一个运算符在语言中存在的原因。