0

我正在尝试遍历我的向量数组,但我似乎无法让它工作,我的错误出现在第二个 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;
}
4

3 回答 3

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)

但更好的解决方案是不要为多个不同的事物使用相同的名称。

于 2013-06-21T05:54:18.557 回答
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;,喜欢使用声明

于 2013-06-21T04:24:48.047 回答
-1

您可以像这样简单地遍历数组向量 for (int i=0; i<myvector.size(); i++) { for (int j=0; j<myvector.size(); j++) { cout<<myvector[i][j]<<endl; } }

于 2013-06-21T04:37:57.767 回答