首页 > 解决方案 > 如何全局更改向量内的对象c ++

问题描述

当一个对象被放置在一个向量内时,向量会复制一个对象,这意味着对对象的任何更改都不会改变向量内的对象。我如何对对象进行任何更改也会更改向量内的对象。

#include <iostream>
#include <vector>
using namespace std;

class objectClass {
public:
    int x = 0;
};

vector<int> my_vector;


int main()
{
    objectClass testObject;
    vector<objectClass> my_vector = {testObject};
    testObject.x = 5;
    cout << my_vector[0].x;
}

//outputs 0

标签: c++

解决方案


你可以通过两种方式做到这一点

  1. 从向量中更改对象,例如:
#include <iostream>
#include <vector>
using namespace std;

class objectClass {
public:
    int x = 0;
};

vector<int> my_vector;


int main()
{
    objectClass testObject;
    
    vector<objectClass> my_vector = {testObject};
    
    my_vector[0].x = 5;
    
    cout << my_vector[0].x;
}
  1. 或者您可以通过使用指针或引用来做到这一点,使用指针向量,其中向量将具有对象引用的集合,因此从向量外部更改对象也将从向量内部更改。
#include <iostream>
#include <vector>
using namespace std;

class objectClass {
public:
    int x = 0;
};

int main()
{
    objectClass testObject;
    vector<objectClass*> my_vector = {&testObject};
    testObject.x = 5;
    cout << my_vector[0]->x;
}

推荐阅读