Причина, по которой я создаю другую векторную температуру, заключается в том, что я хочу сохранить исходные значения. Однако после выполнения функции значения все еще изменяются. Когда я отлаживаю, я понимаю, что они указывают на то же адресное местоположение. Почему это так? и как я могу это исправить?Справочная проблема
vector<Node*> vertices;
vector<Node*> facility;
...
for (int i = 0; i < facility.size(); i++){
vector<Node*>temp(vertices);
calculateAttDist(0, facility[i]->data, temp);
for (int j = 0; j < vertices.size(); j++){
if (vertices[j]->type == 1 && i != 0 && vertices[j]->aDist > temp[j]->key){
vertices[j]->aDist = temp[j]->key;
}
else if (vertices[j]->type == 1 && i == 0){
vertices[j]->aDist = temp[j]->key;
}
}
}
Поскольку вы удерживаете указатели на элементы ... go for 'vector' –
quantdev
Если вы скопируете 'vector', элементы будут скопированы как они есть. В вашем случае 'T' является указателем, поэтому значения указателя (адреса, на которые они указывают) будут одинаковыми как в исходном векторе, так и в копии. –
Есть ли какая-то конкретная причина, по которой вы используете 'vector' вместо 'vector '? –