Tôi mới sử dụng C++. Tôi muốn biết làm thế nào có kinh nghiệm lập trình làm điều này.cách xóa tất cả các số nguyên ngay cả từ tập hợp <int> bằng C++
những gì tôi có:
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(5);
for(set<int>::iterator itr = s.begin(); itr != s.end(); ++itr){
if (!(*itr % 2))
s.erase(itr);
}
và dĩ nhiên, nó không hoạt động. bởi vì nó được tăng lên sau khi nó bị xóa. có nghĩa là Itr phải trỏ đến phần bắt đầu của bộ mọi lúc sau khi tôi xóa phần tử khỏi tập hợp?
Bạn có khung phụ trong mã. – qba
tại sao nó được cho phép trong chức năng xóa, nhưng không được phép ở bên ngoài? – Quincy
'itr ++' được cho phép ở bên ngoài, nhưng '++ nó' là ở chung thích hợp hơn khi giá trị không được sử dụng, vì những lý do để tẻ nhạt đi vào mọi thời điểm bất cứ ai làm điều đó ;-) Trong trường hợp này, nó có thể tốt hơn bỏ qua các thực hành tốt thông thường và viết 'itr ++', chỉ vì mã đọc hơi mượt mà nếu nó giống nhau trong cả hai trường hợp. –