了解std::list迭代器的size()方法


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 vectorsiterator,因此在延迟时,引用到列表中的向量之一,因此您询问该向量的大小。

如果迭代器没有调用成员函数,因为您没有使用运算符.

运算符->间接成员访问运算符。它通过左手操作数进行间接寻址,并访问间接寻址结果的成员。当你间接通过迭代器时,你会得到迭代器指向的对象,所以你要做的是调用指向对象的成员函数,在这种情况下,它是一个向量。

可以使用一元间接运算符*和非间接成员访问运算符.:获得相同的结果

(*(it)).size()

这不像使用运算符->那样可读,也不像使用运算符那样漂亮,这应该解释了后一个运算符在语言中存在的原因。

最新更新