Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我得到向量下标超出范围错误。我以前有过它,但它会打印“之前”,但不会打印“之后”,所以我很困惑为什么其中一条线会导致它。
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;
如果c是任何向量中元素的计数,那么错误只是在具有N项目的向量中,项目索引是0...[N-1]而不是1...N。
c
N
0...[N-1]
1...N
因此,请进行以下更正:
for(int i=0; i < (c); i++) {
顺便说一句,在类 C 语言中for,迭代次数的循环原型N并非巧合:
for
for(int i = 0; i < N; ++i)
坚持这一点,除非你有一个非常好的理由来例外,并且你可以“免费”避免这种类型的错误。