Tôi có thể thực hiện các phép tính bình thường với các trình vòng lặp hay không, tức là chỉ tăng thêm bằng cách thêm một số?Tôi có thể tăng thêm một trình lặp bằng cách thêm một số không?
Như một ví dụ, nếu tôi muốn loại bỏ các yếu tố vec[3]
, tôi có thể chỉ làm điều này:
std::vector<int> vec;
for(int i = 0; i < 5; ++i){
vec.push_back(i);
}
vec.erase(vec.begin() + 3); // removes vec[3] element
Nó làm việc cho tôi (g ++), nhưng tôi không chắc chắn nếu nó là đảm bảo làm việc.
Ồ, vì vậy nó sẽ không hoạt động cho std :: list? – Frank
Chính xác; đã thêm một số liên kết tài liệu liệt kê các chức năng nào sẽ có sẵn cho các loại trình vòng lặp nào. –
Không, không. Toán tử + có nghĩa là "trong một bước, nhảy xa về phía trước" mà một trình vòng lặp danh sách không thể thực hiện được. Chuyển tiếp các trình vòng lặp truy cập không ngẫu nhiên (như trình vòng lặp danh sách) chỉ hỗ trợ toán tử increment (++) để thúc đẩy một phần tử tại một thời điểm. Như Todd đã nói, bạn có thể sử dụng lệnh std :: advance, điều này gọi lặp đi lặp lại toán tử ++, để nhanh chóng thể hiện ý tưởng di chuyển một trình lặp không ngẫu nhiên về phía trước bằng một số bước. –