C++ 在vector中访问类中的vector
我觉得我这样做是对的,但我一直收到错误“EXC坏访问” 我有一个类C++ 在vector中访问类中的vector,c++,class,vector,C++,Class,Vector,我觉得我这样做是对的,但我一直收到错误“EXC坏访问” 我有一个类人,对所有公共事物都相当简单 class person { public: int id; vector<float> scores; float avgscore; }; 然后我尝试访问类person (*people)[current_person].scores.push_back(temp); 其中,current\u person=0,temp是一个整数 我处理向量的方法正
人
,对所有公共事物都相当简单
class person
{
public:
int id;
vector<float> scores;
float avgscore;
};
然后我尝试访问类person
(*people)[current_person].scores.push_back(temp);
其中,current\u person
=0,temp
是一个整数
我处理向量的方法正确吗?试试这个:
vector<person> people(num_persons);
这条线
vector<person> *people = new vector<person>[num_persons];
由于您已经在使用vector,您可以继续使用vector for people,而不是使用原始指针
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.
std::病媒人;
人p1;
人。推回(人);
人员[位置].分数.回脓(分数);
//不用再担心释放人们的记忆了。
我在stackoverflow中四处搜索,似乎初始化应该使用圆括号,即新向量(num_persons);但我不知道为什么会这样,而且似乎前后矛盾。我会投票给你一个答案,这并不矛盾。唯一使用[]进行初始化的是C样式的数组。其他所有内容都使用()(或{}作为初始化列表)。这很有意义,因为您不会删除[]
向量指针。@Max注意:std::map
在查找失败后使用运算符[]()
进行隐式插入。剩下的我同意。这仍然让我产生了糟糕的访问错误,尽管是在不同的地方。对不起,伙计们,问题是for循环超出了向量的界限,这是一个关于sloppiness的案例研究。谢谢你所做的一切!
vector<person> *people = new vector<person>[num_persons];
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;
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.