vector <vector<int> > v8;
int N;
cin >> N;
for (int i = 0; i < N; i )
{
int n;
cin >> n;
vector <int> temp;
for (int i = 0; i < n; i )
{
int x;
cin >> x;
temp.push_back(x);
}
v8.push_back(temp);
}
vector <int> ::iterator it;
for (it = v8.begin(); it < v8.end(); it )
{
cout << (*it) << " ";
}
我收到此錯誤: 沒有運算子“=”匹配這些運算元C/C (349) intro.cpp(161, 13):運算元型別為:__gnu_cxx::__normal_iterator<int *, std::vector<int, std: :allocator>> = __gnu_cxx::__normal_iterator<std::vector<int, std::allocator> *, std::vector<std::vector<int, std::allocator>, std::allocator<std::向量<int, std::allocator>>>>
我該怎么解決這個問題??
uj5u.com熱心網友回復:
問題是它it是1D的迭代器vector<int>,而b8.begin()給我們提供了 2D 的迭代器vector<vector<int>>。所以這些迭代器彼此不兼容。也就是說,您不能使用迭代器it來遍歷二維向量。
vector <int> ::iterator it;您可以通過如下所示進行更改來解決此問題:
vector <vector<int>> ::iterator it; //change made here. Now it is an iterator to a 2D vector
for (it = v8.begin(); it != v8.end(); it )
{
for(auto i = (*it).begin(); i != (*it).end(); i) // i is an iterator to a 1D vector
{
cout << (*i) << " ";//it changed to i
}
}
另一種選擇是使用auto基于范圍的for回圈,如下所示:
for (auto &row: v8)
{
for(auto &col: row)
{
cout << col << " ";
}
}
uj5u.com熱心網友回復:
要遍歷 中的向量v8,列舉它們的元素,請使用基于范圍的for回圈。
for (auto& v: v8) {
for (auto& it: v) {
std::cout << it << ' ';
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429500.html
上一篇:.NetRedirectTo,帶有來自原始請求聲納問題的查詢字串
下一篇:無法列印陳述句C
