c++ - 如何全局更改向量内的对象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
解决方案
你可以通过两种方式做到这一点
- 从向量中更改对象,例如:
#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;
}
- 或者您可以通过使用指针或引用来做到这一点,使用指针向量,其中向量将具有对象引用的集合,因此从向量外部更改对象也将从向量内部更改。
#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;
}
推荐阅读
- apache-spark - Pregel API - 为什么小图上的迭代会消耗这么多内存?
- spring - 所有请求的 Spring WebClient 和共享客户端凭证令牌
- gatsby - graphql 在本地工作,但不在 Netlify 中(Gatsby + Netlify CMS)
- javascript - Jquery Ajax 发布与 ASP 核心 JsonResult
- javascript - 我们可以在类方法中使用 IIFE(立即调用函数表达式)吗
- spring-webflux - Reactor - 第一次清空时停止源
- excel - 使用 VBA 将 .xlsx 文件中的唯一值打印和计数到 Excel 工作表中的另一列
- javascript - 将数组中的字符串连接在一起,限制字符重复
- azure - 需要在 csv 文件中添加标题和尾部记录 - Azure 数据工厂
- delphi - 有什么方法可以获取Delphi编译器的子版本