วิธีที่ดีที่สุดในการตรวจสอบว่าแผนที่ STL มีค่าสำหรับคีย์ที่กำหนดคืออะไร?
#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;
}
ตรวจสอบสิ่งนี้ในตัวดีบักดูเหมือนว่าiter
เป็นเพียงข้อมูลขยะ
หากฉันไม่แสดงข้อคิดเห็นในบรรทัดนี้:
Bar b2 = m[2]
ดีบักแสดงให้เห็นว่าเป็นb2
{i = 0}
(ฉันเดาว่าหมายความว่าการใช้ดัชนีที่ไม่ได้กำหนดจะส่งคืนโครงสร้างด้วยค่าว่าง / ค่าเริ่มต้นทั้งหมดหรือไม่)
วิธีการเหล่านี้ไม่ดีเลย สิ่งที่ฉันชอบคืออินเทอร์เฟซแบบนี้:
bool getValue(int key, Bar& out)
{
if (map contains value for key)
{
out = map[key];
return true;
}
return false;
}
มีบางสิ่งตามสายเหล่านี้หรือไม่?