Tôi muốn xóa khóa khỏi bản đồ STL. Tuy nhiên, map.erase()
không làm gì cả. Tôi sẽ làm như thế nào để thực hiện điều nàyXóa khóa khỏi bản đồ C++
Trả lời
Nó phụ thuộc hoàn toàn vào cách bạn đang gọi nhưng có vẻ như bạn đang sử dụng tùy chọn first,last
. Nếu bạn đang có, bạn cần phải ghi nhớ rằng nó xóa các yếu tố bắt đầu từ first
, tối đa nhưng không bao gồmlast
. Miễn là bạn tuân theo quy tắc đó, việc loại bỏ dựa trên vòng lặp sẽ hoạt động tốt, hoặc là một phần tử đơn lẻ hoặc một phạm vi.
Nếu bạn đang xóa bằng khóa, sau đó nó cũng sẽ hoạt động, giả sử là chìa khóa trong đó tất nhiên.
Mẫu mã sau đây cho thấy cả ba phương pháp trong hành động:
#include <iostream>
#include <map>
int main (void) {
std::map<char,char> mymap;
std::map<char,char>::iterator it;
mymap['a'] = 'A'; mymap['b'] = 'B'; mymap['c'] = 'C';
mymap['d'] = 'D'; mymap['e'] = 'E'; mymap['f'] = 'F';
mymap['g'] = 'G'; mymap['h'] = 'H'; mymap['i'] = 'I';
it = mymap.find ('b'); // by iterator (b), leaves acdefghi.
mymap.erase (it);
it = mymap.find ('e'); // by range (e-i), leaves acd.
mymap.erase (it, mymap.end());
mymap.erase ('a'); // by key (a), leaves cd.
mymap.erase ('z'); // invalid key (none), leaves cd.
for (it = mymap.begin(); it != mymap.end(); it++)
std::cout << (*it).first << " => " << (*it).second << '\n';
return 0;
}
mà kết quả đầu ra:
c => C
d => D
Tôi cảm thấy rất câm vì thiếu ghi đè cho 'const key_type &'. Cảm ơn đã chỉ ra điều đó! –
Bạn sẽ phải tìm ra iterator đầu tiên
map.erase(ITERATOR) ;
Để làm cho điều này an toàn, bạn cần đảm bảo rằng ITERAT HOẶC tồn tại, tuy nhiên. Ví dụ mẫu:
#include <stdio.h>
#include <map>
using namespace std ;
int main()
{
map<int,int> m ;
m.insert(make_pair(1,1)) ;
map<int,int>::iterator iter = m.find(1) ;
if(iter != m.end())
m.erase(iter);
else puts("not found") ;
}
- 1. Làm cách nào để xóa nhiều khóa khỏi bản đồ?
- 2. Xóa nhiều khóa khỏi Bản đồ theo cách hiệu quả?
- 3. c + + xóa bản đồ()
- 4. Xóa Đa giác khỏi bản đồ
- 5. Xóa các giá trị nil khỏi bản đồ?
- 6. Xóa số khỏi văn bản bằng C#
- 7. Leaflet.js: Cách xóa nhiều lớp khỏi bản đồ
- 8. Cách xóa tất cả khỏi bản đồ google
- 9. Xóa điểm đánh dấu khỏi bản đồ google iOS
- 10. Xóa các mục khỏi bản đồ dựa trên nội dung của một bản đồ khác
- 11. Xóa khóa khỏi mảng kết hợp
- 12. Xóa thuộc tính khỏi đồ thị Neo4j
- 13. xóa các bản sao khỏi mảng trong mục tiêu c
- 14. Xóa Khóa khỏi Từ điển bằng tên khóa
- 15. xóa tệp khỏi mã C
- 16. Loại tùy chỉnh làm khóa cho bản đồ - C++
- 17. C# xóa các mục khỏi danh sách
- 18. VBA, xóa các bản sao khỏi mảng
- 19. Xóa các dòng có chứa từ khóa khỏi một tệp
- 20. Lấy khóa có sẵn đầu tiên trong bản đồ
- 21. Xóa khóa/giá trị khỏi mục MongoDB hiện có
- 22. cách xóa bản ghi khỏi ORMLITE?
- 23. Xóa Twitter Typeahead khỏi Hộp văn bản
- 24. Xóa "\ n" cuối cùng khỏi văn bản
- 25. Xóa bóng khỏi các bản xem trước
- 26. Xóa cờ khỏi C++ FLAGS trong Makefile?
- 27. C# Xóa danh sách khỏi danh sách
- 28. Xóa các khóa danh sách đen khỏi mảng trong PHP
- 29. Làm cách nào để xóa khóa khỏi tài liệu RethinkDB?
- 30. Xóa phần tử khỏi mảng đa chiều dựa trên khóa
Xóa làm điều gì đó. Bạn sử dụng nó như thế nào? Và điều gì khiến bạn tin rằng nó không làm gì? –
map.erase (khóa). –
Và câu hỏi thứ hai của tôi? –