访问矢量在矢量中的类

时间:2012-12-02 04:00:52

标签: c++ class vector

我觉得我正在以正确的方式解决这个问题,但我不断收到错误“EXC BAD ACCESS”

我有一个班级person,相当简单,一切都是公开的。

class person
{
    public:
    int id;
    vector<float> scores;
    float avgscore;
};

然后我使用new运算符

制作person s的向量
vector<person> *people = new vector<person>[num_persons];

然后我尝试访问类person

中的向量
(*people)[current_person].scores.push_back(temp);

其中current_person = 0,temp是整数。

我是否以正确的方式处理向量?

2 个答案:

答案 0 :(得分:2)

试试这个:

vector<person> people(num_persons);

然后......

people[current_person].scores.push_back(temp);

答案 1 :(得分:1)

这一行

vector<person> *people = new vector<person>[num_persons];

新向量只创建一个向量,但它包含0个元素,访问(*people)[0]是未定义的行为,您的错误消息EXC BAD ACCESS告诉故事。您仍然需要向访问它的人添加person元素,例如

person p1;
people->push_back(p1);  // add element to vector
(*people)[0].scores.push_back(temp); // now you are ok to visit first element.
// don't forget to delete vector at right place
delete people;

当你正在使用vector时,你可以继续使用vector而不是使用原始指针。

std::vector<person> people;
person p1;

people.push_back(person);
people[position].scores.pus_back(score);
// don't need to worry releasing people memory anymore.