我正在尝试迭代我的矢量数组,但我似乎无法让它工作,我的错误是在第二个for循环,错误信息如下:
在'double'之前预期的主要表达
我已经了解了如何迭代常规向量,但是如何迭代向量数组? 我遵循了这个结构:
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector;
for (int i=1; i<=5; i++) myvector.push_back(i);
std::cout << "myvector contains:";
for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
我似乎无法让我的矢量数组版本工作。
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main(int arc, char *argv[])
{
vector<double> vector[7];
double num[7];
ifstream infile("data.txt");
string temp;
for(int i = 0; i <= 6; i++)
{
infile >> temp;
cout << temp << ' ';
}
cout << endl;
while(infile >> num[0] >> num[1] >> num[2] >> num[3] >> num[4] >> num[5] >> num[6])
{
for(int i = 0; i <= 6; i++)
{
vector[i].push_back(num[i]);
}
}
cout << endl;
for(int i = 0; i <= 6; i++)
{
// error on this line
// not sure what is wrong before vector<double>:: iterator it = vector[i].begin()
for(vector<double>::iterator it = vector[i].begin(); it != vector[i].end(); ++it)
{
cout << ' ' << *it;
}
}
return 0;
}
答案 0 :(得分:2)
在这行代码上
for(vector<double>::iterator it = vector[i].begin(); it != vector[i].end(); ++it)
vector
不是一种类型,它是一个变量。本地范围中的名称隐藏全局范围中的名称。
你可以写
for(::std::vector<double>::iterator it = vector[i].begin(); it != vector[i].end(); ++it)
或
for(auto it = vector[i].begin(); it != vector[i].end(); ++it)
但更好的解决方案是不要对多个不同的东西使用相同的名称。
答案 1 :(得分:1)
#include <iostream>
#include <fstream>
#include <vector>
using std::ifstream;
using std::vector;
using std::cout;
int main(int arc, char *argv[])
{
const size_t data_size = 7;
ifstream infile("data.txt");
vector<double> input;
double num;
while ((infile >> num) && (input.size() <= data_size))
{
input.push_back(num);
}
for (vector<double>::iterator it = input.begin(); it != input.end(); ++it)
{
cout << ' ' << *it;
}
return 0;
}
使用最少的变量并获得一个工作。另外,不要在标准库函数,类,结构等之后命名变量,并避免using namespace std;
{{1}}和using directive s {/ 3}}。
答案 2 :(得分:-1)
你可以简单地遍历这样的数组向量
for (int i=0; i<myvector.size(); i++)
{
for (int j=0; j<myvector.size(); j++)
{
cout<<myvector[i][j]<<endl;
}
}