![](/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.