0
我編寫了以下程序以初始化vector
的Person
。但Person
對象的id
不會更改。這真讓我困惑。有人可以給我一個解釋嗎?如何使用C++中的迭代器更改向量中每個elmement的值
#include <iostream>
#include <vector>
#include <string>
#include "Person.h"
using namespace std;
int main()
{
vector<Person>* pv = new vector<Person>(5,Person(0));
int i = 0;
for(Person person : *pv)
{
person.id = i++;
}
for(Person person : *pv)
{
cout<< person.id << endl;
}
return 0;
}
與person.h
這樣
#include <string>
class Person
{
public:
int id;
std::string name;
Person(int d);
};
我認爲你需要迭代for(Person&person:* pv)?我認爲你正在改變副本的ID。如果通過引用進行迭代,則應更改向量中對象的ID。 – twsaef
是的!你是對的。非常感謝:) – feng823
好的,我將添加它作爲答案。 – twsaef