Tôi muốn có được giá trị tiếp theo cho thiết bị lặp STL list
nhưng nó không thực hiện operator+
, vector
. Tại sao và làm cách nào tôi có thể nhận được giá trị mà tôi muốn?Tại sao chỉ ngẫu nhiên truy cập-iterator thực hiện operator + trong C++?
Tôi nghĩ rằng tôi có thể làm điều đó nếu tôi gọi operator++
nhiều lần, nhưng không phải là một chút bẩn?
Những gì tôi muốn làm là như sau:
list<int> l;
...omitted...
list<int>::iterator itr = l.begin() + 3; // but, list iterator does not have
// operator+
giải pháp tốt nhất cho những gì tôi muốn là gì?
(Hầu như) không liên quan: bạn cần đảm bảo rằng có thể đạt được vị trí này, nếu không bạn sẽ gọi hành vi không xác định. Mặc dù từ danh sách :: begin() 'thật dễ dàng, trong một trường hợp tổng quát hơn, cách duy nhất để biết (đối với nonAccessAccessIterator) khoảng cách với' list :: end() 'là gọi' std :: khoảng cách' ... O (N) quá. –
Hai câu trả lời tuyệt vời về chủ đề này. +1 cho cộng đồng! –