Cách tốt nhất để xác định xem bản đồ STL có chứa giá trị cho một khóa đã cho không là gì?
#include <map>
using namespace std;
struct Bar
{
int i;
};
int main()
{
map<int, Bar> m;
Bar b = {0};
Bar b1 = {1};
m[0] = b;
m[1] = b1;
//Bar b2 = m[2];
map<int, Bar>::iterator iter = m.find(2);
Bar b3 = iter->second;
}
Kiểm tra điều này trong một trình gỡ lỗi, có vẻ như iter
chỉ là dữ liệu rác.
Nếu tôi bỏ ghi chú dòng này:
Bar b2 = m[2]
Các chương trình gỡ rối mà b2
là {i = 0}
. (Tôi đoán điều đó có nghĩa là việc sử dụng một chỉ mục không xác định sẽ trả về một cấu trúc với tất cả các giá trị trống / chưa được khởi tạo?)
Cả hai phương pháp này đều rất tuyệt Điều tôi thực sự thích là một giao diện như thế này:
bool getValue(int key, Bar& out)
{
if (map contains value for key)
{
out = map[key];
return true;
}
return false;
}
Có một cái gì đó dọc theo những dòng này tồn tại?