我是新来的地图。我需要一个为表演构建座位的类(有很多表演)。这是我到目前为止的内容:
// header stuff/libraries
Seats::Seats()
{
map< const string, bool > seat;
seat["A1"] = false;
seat["A2"] = false;
/* more seats .. */
}
如果要更新座位,是否需要创建访问成员?如果可以的话,我可以举个例子吗?
最佳答案
正如其他人指出的那样,您的地图变量需要是该类的数据成员,而不是您发布的Seats构造函数的本地范围
class Seats {
public:
Seats();
bool GetSeat(const string &);
void SetSeat(const string &, bool);
private:
map< string, bool > seat;
};
Seats::Seats() {
// merely your example values posted.
seat["A1"] = false;
seat["A2"] = false;
}
void Seats::SetSeat(const string &seat_number, bool occupied) {
seat[seat_number] = occupied;
}
bool Seats::GetSeat(const string &seat_number) {
return seat[seat_number];
}
请记住使用地图的[]运算符,但是如果元素尚不存在,可能会导致将其插入数据结构中:
link text
T&运算符[](const key_type&x);
如果x与任何键都不匹配
容器中的元素,功能
用该键插入一个新元素
并返回对其映射的引用
值。请注意,这总是
即使地图大小增加1,即使
没有映射值分配给
元素(元素构造
使用其默认构造函数)。