我在这行代码中遇到此错误。请帮我解决一下。
for (int i=0; i=((Main.size())-1); i++) {
主要代码..
#include <istream>
#include <fstream>
#include <vector>
#include <algorithm>
#include "data.hpp"
using namespace std;
int main() {
vector<double> Main;
int count;
string lineData;
double tmp;
ifstream myfile ("sheffield.data", ios::in);
//double number;
myfile >> count;
for(int i = 0; i < count; i++) {
myfile >> tmp;
Main.push_back(tmp);
cout << count;
}
cout << "Numbers:\n";
cout << Main.size();
for (int i=0; i=((Main.size())-1); i++) {
cout << Main[i] << '\n';
}
cin.get();
return 0;
}
答案 0 :(得分:4)
成员函数大小返回的值的类型是无符号的,而i被声明为signed。
for (int i=0; i=((Main.size())-1); i++) {
cout << Main[i] << '\n';
}
所以代替int i
使用至少unsigned int i
或size_t i
。如果你要使用类std :: vector中定义的类型{{},那就更好了。 1}}
同样在循环的条件部分,您使用赋值运算符std::vector<double>::size_type i
而不是比较运算符=
但是如果您要更新运算符,则条件将是错误的,直到size()将是等于0.而不是运算符==
,您必须使用==
循环应该采用以下方式
<=
另外,对于这个for语句,你可以使用基于范围的语句看起来更简单。例如
for ( std::vector<double>::size_type i = 0; i < Main.size(); i++ ) {
cout << Main[i] << '\n';
}
答案 1 :(得分:2)
i
的类型为int(signed),而Main.size()
的结果为unsigned int,可能为size_t
,具体取决于Main
的tye。
如果你在for循环中比较它们,你有解释。
但请注意:单个=
是一项任务,而非比较。
修复(可能):
for (unsigned int i=0; i < Main.size(); i++) {
答案 2 :(得分:0)
您也可以考虑使用迭代器:
cout << "Numbers:\n";
cout << Main.size();
for (vector<double>::const_iterator i = Main.begin(); i != Main.end(); ++i) {
cout << *i << '\n';
}
(作为旁注,用大写字母命名变量(Main
)有点令人困惑!)