[英]iterator to a vector of vector of int
我在下面的代碼中有一個錯誤,我想打印每個子向量中的第一個元素:
vector<vector<int>> logs{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}};
for (auto beg = logs.begin(); beg != logs.end(); beg++) {
cout << *beg[0] << endl;
}
錯誤來自cout << *beg[0]...
:
Indirection requires pointer operand ('std::vector<int, std::allocator<int>>' invalid)
所以我的問題是:迭代器的引用應該是向量“logs”中的一個子向量,所以我使用下標來訪問它的第一個元素。 為什么會有std::vector<int, std::allocator<int>>
object? std::allocator<int>
從哪里來? 如何訪問子向量中的元素?
問題(上述錯誤的原因)是由於operator precedence ,表達式*beg[0]
被分組為(或等同於):
*(beg[0])
這是行不通的,因為beg
是一個迭代器並且沒有[]
運算符。 這是因為運算符[]
的優先級高於運算符*
。
要解決此問題,請替換cout << *beg[0] << endl;
和:
cout << (*beg)[0] << endl; //or use beg->at(0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.