我觉得我正在以正确的方式解决这个问题,但我不断收到错误“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
是整数。
我是否以正确的方式处理向量?
答案 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.