【发布时间】:2021-01-15 12:52:43
【问题描述】:
所以我第一次开始学习向量并编写了一个简单的程序,如下所示:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> g1;
int n;
cout<<"enter values"<<endl;
do
{
cin>>n;
g1.push_back(n);
} while (n);
cout<<"Vector values are: "<<endl;
for(auto i=g1.begin(); i<g1.size();i++)
cout<<*i<<endl;
}
当我尝试执行它时,在 g1.size() 部分显示“类型不匹配”的错误。为什么会发生这种情况?我对所涉及的迭代器使用了 auto 关键字,并假设不会有任何问题?
【问题讨论】:
-
g1.begin()产生std::vector<int>::iterator而不是size_t。 -
for (auto&& x : g1) cout << x << "\n";对于最后一个循环更可取: 1. for-range 而不是纠结于细节并弄错。 2.auto&&原则上仍然避免复制,这对int并不重要。 3."\n"避免昂贵的冲洗。 -
不要如此含糊地描述错误。重复该消息。
-
对于模糊的错误描述,我深表歉意。这是我在网上问的第一个问题
-
@vijay 您只需将
i<g1.size()更改为i != g1.end()即可修复循环条件。