2011-05-07 89 views
2

我得到的向量下标超出范围错误。我之前已经有过,但它会在'之前'打印,但不会在'之后'打印,所以我很困惑为什么其中一条线会导致它。向量下标超出范围

cout << "before" << endl; 
vector<vector<char>> animals; 
vector<vector<char>> food; 
vector<char> other; 
int lastline = 0; 
for(int i=1;i<=(c);i++){ 
cout << "after" << endl; 
+5

什么是(c)'? – kennytm 2011-05-07 11:53:05

+3

你可以编辑修复你的开放式循环吗? – 2011-05-07 11:56:30

+0

''''后不打印 – pighead10 2011-05-07 12:01:20

回答

2

如果c在任何矢量元素的个数,那么错误仅仅是与N项的矢量的项目指标为0...[N-1],而不是1...N

因此,使这种修正:

for(int i=0; i < (c); i++) { 

顺便说一句,在类似C语言for循环迭代访问N倍的原型是不是巧合:

for(int i = 0; i < N; ++i) 

棒与除非你有一个非常好的理由来做出例外,并且你可以避免这种“免费”的错误。

+0

它永远不会到达循环,它不会'后'打印。 – pighead10 2011-05-07 12:01:34

+0

只需追加到Jons答案,size()方法存在以获取向量中元素的数量。使用这种方法调用通常是更好的方式(如果你还没有) – mdec 2011-05-07 12:04:27

+0

vector > animals;应该这样写。注意空间 – Arunmu 2011-05-07 12:18:01