我是新来的地图。我需要一个为表演构建座位的类(有很多表演)。这是我到目前为止的内容:

// 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,即使
  没有映射值分配给
  元素(元素构造
  使用其默认构造函数)。

10-08 03:50