![](/img/trans.png)
[英]No match for “operator-” on reverse_iterator for std::map
[英]Why does std::vector::iterator::operator-> only drill down one level?
此代码无法编译:
void foo(vector<unique_ptr<pair<int, int>>> bar)
{
bar.begin()->first;
}
这里有什么问题? 不应该operator->
向下钻取直到pair
吗?
不应该
operator->
向下钻取直到pair
吗?
operator ->
的递归仅在您获得指针类型之前有效。 一旦发生这种情况,递归就会停止,您可以访问该指针指向的内容。 在这种情况下, std::vector::iterator::operator->
返回一个unique_ptr<pair<int, int>>*
作为向量中元素的指针类型。 一旦你点击了那个指针,你就只能访问unique_ptr
的成员,而不是它指向的pair<int, int>
。
你可以得到你想要的使用
(*bar.begin())->first;
所以现在您使用的是operator->
of unique_ptr<pair<int, int>>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.