Computer >> Máy Tính >  >> Lập trình >> C ++

Sự vô hiệu hóa lặp lại trong chương trình C ++


Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để hiểu tính vô hiệu của trình lặp trong C ++.

Trong khi lặp lại các phần tử của một đối tượng vùng chứa, đôi khi nó có thể trở nên vô hiệu nếu chúng tôi không áp dụng kiểm tra ràng buộc. Điều này chủ yếu xảy ra do sự thay đổi về hình dạng và kích thước của đối tượng vùng chứa.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main() {
   //declaring a vector
   vector <int> v{1, 5, 10, 15, 20};
   //changing vector during execution
   //which will cause bound invalidation
   for (auto it=v.begin();it!=v.end();it++)
      if ((*it) == 5)
         v.push_back(-1);
   for (auto it=v.begin();it!=v.end();it++)
      cout << (*it) << " ";
   return 0;
}

Đầu ra

1 5 10 15 20 -1 -1

(Cũng có thể xảy ra trường hợp để thêm phần tử mới, vectơ được sao chép sang một vị trí mới với trình vòng lặp của chúng tôi vẫn trỏ đến vị trí cũ, sau đó sẽ gây ra lỗi.)