C++ 基本迭代器C++;如何迭代向量数组

C++ 基本迭代器C++;如何迭代向量数组,c++,arrays,vector,C++,Arrays,Vector,我有一个向量数组,但由于某种原因,我不能遍历向量数组。它给了我这么长的错误信息 int num = 6; vector<string> vArray[num]; for (int i = 0; i < 50; i++) { vArray[i % num].insert(vArray[i].begin(), data); } //runs fine for (int i = 0; i < num; i++) { for(std::vector<int>:

我有一个向量数组,但由于某种原因,我不能遍历向量数组。它给了我这么长的错误信息

int num = 6;
vector<string> vArray[num];

for (int i = 0; i < 50; i++)
{
 vArray[i % num].insert(vArray[i].begin(), data);
} //runs fine

for (int i = 0; i < num; i++)
{
 for(std::vector<int>::iterator it = vArray[i].begin(); it != vArray[i].end(); it++)
  {
    cout << *it << endl;
  }
}//problem..
int num=6;
向量vArray[num];
对于(int i=0;i<50;i++)
{
vArray[i%num].insert(vArray[i].begin(),data);
}//运行良好
for(int i=0;i>>>“到非标量类型”\uuu gnu\u cxx::\uuuu normal\u迭代器>>”请求

p2.cpp:94:错误:it!=vArray[i]中的“operator!=”不匹配。std::vector::以_Tp=std::basic_字符串结尾,std::allocator>,_Alloc=std::allocator,std::allocator>'

查看行:

vArray[i % num].insert(vArray[i].begin(), data);
现在,当i=6时,这表示:

vArray[0].insert(vArray[6].begin(), data);
并且vArray[6]没有定义

第二个问题是,对
std::vector::iterator
使用
std::vector
实际上可以使用关键字auto来避免这些错误

请尝试以下操作:

for(auto it = vArray[i].begin(); it != vArray[i].end(); it++)

这意味着,即使您更改vArray中的类型,for循环也会在假设c++11的情况下工作。

为什么要尝试对std::vector使用std::vector::iterator?^这就是我所想的。还有,什么是数据?lol非常感谢帮助SSI解决了这个问题。数据只是简单的字符串。我感觉很笨。lolhmm..6%6是0,所以它永远不会变成第6个inkIt是,但您需要在每次访问vArray时使用它,而不仅仅是在某些情况下