向量下标超出范围

发布于 2024-11-05 15:03:41 字数 318 浏览 6 评论 0原文

我收到向量下标超出范围错误。我以前遇到过,但它打印“之前”,但不打印“之后”,所以我很困惑为什么其中一行会导致它。

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;

I'm getting the vector subscript out of range error. I've had it before, but it prints 'before' but it doesn't print 'after' so I'm confused at to why one of these lines would be causing it.

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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云醉月微眠 2024-11-12 15:03:41

如果 c 是任何向量中元素的计数,那么错误就在于,在具有 N 项的向量中,项索引为 0...[N -1] 而不是 1...N

因此,进行此更正:

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

顺便说一下,在类 C 语言中,迭代 N 次的 for 循环的原型并非巧合:

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

坚持使用此方法,除非您有这是一个非常非常好的例外理由,并且您可以“免费”避免此类错误。

If c is the count of elements in any vector, then the mistake is simply that in a vector with N items the item indexes are 0...[N-1] and not 1...N.

Therefore, make this correction:

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

By the way, in C-like languages the archetype of a for loop that iterates N times is, not coincidentally:

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

Stick with this unless you have a very very good reason to make an exception, and you get to avoid this type of bug "for free".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文