Hiện tại tôi sử dụng một trình vòng lặp để tìm kiếm thông qua một vectơ và kiểm tra các phần tử của nó. Tôi truy cập các yếu tố bằng cách sử dụngTôi có thể làm số học con trỏ trên một STL :: vector :: iterator
std::vector<int>::iterator it;
if (*it == 0);
Tôi có thể sử dụng cùng một lôgic kiểu số học để kiểm tra thành phần tiếp theo (mà không thay đổi trình lặp của tôi) không?
đầu tiên tôi cần phải xem nếu nó sẽ đẩy iterator ngoài giới hạn
if (it != myvec.end())
Sau đó kiểm tra cả hai yếu tố hiện tại và phần tử tiếp theo
if (*it == 1 && *(it + 1) == 1)
Sẽ làm việc này như tôi mong đợi từ việc sử dụng con trỏ?
Vì vậy, tôi không thể thực hiện phép toán số học trên 'list :: iterator', phải không? – Alcott
@Alcott - đúng. Một danh sách :: iterator là một trình vòng lặp hai chiều và không hỗ trợ truy cập ngẫu nhiên. Bạn có thể sử dụng 'std :: advance' để thực hiện di chuyển với một cuộc gọi đơn lẻ nhưng độ phức tạp của trước là' O (n) 'cho các danh sách (nơi nó sẽ là' O (1) 'cho một vectơ). –