如何连接向量的两个元素?

时间:2016-04-30 08:55:17

标签: c++ c++11 shared-ptr stdvector

我想知道在C ++中是否有一种方法可以连接一个向量的两个元素,例如std :: vector,这样如果一个被更改,另一个会自动更改。如果没有,还有其他办法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

假设您有两个包含同一类Object实例的向量。然后使用shared_ptr<Object>您可以引用相同的对象:

vector<shared_ptr<Object>> v1;
vector<shared_ptr<Object>> v2;

for(int i=0;i<3;i++) {
     v1.push_back(shared_ptr<Object>(new Object()));
     v2.push_back(v1[i]);
}

现在,如果您编辑一个向量的对象的属性,相应的对象也将更新:

v1[0]->value = 12;
cout << v2[0]->value << endl;  // print 12

答案 1 :(得分:0)

class A {
  ... Your class definition

  public:
      int x;
};
typedef std::shared_ptr<A>     APtr;
typedef std::vector<APtr>      AVect;

AVect v;
APtr ptr_a = std::make_shared<A>(); //using std::make_shared<> is better than naked new allocations in code.
v.push_back(ptr_a);
v.push_back(ptr_a);

v[0]->x = 3; //modifies v[1] as well