2016-04-30 13 views
0

ベクトルの2つの要素、例えばstd :: vectorを接続する方法がC++にあるかどうかを知りたいのですが、一方が変更された場合は自動的に変更されます。そうでない場合は、他の方法がありますか?ベクトルの2つの要素を接続する方法は?

ありがとうございました。

+0

あなたがすることができます'std :: shared_ptr'をベクトルに格納してください。あなたの質問にタグを付けたように、あなたはすでにそれを試しましたが、それはあなたのためには機能しませんでしたか? –

+0

@πάνταῥεanswer答えをありがとう。私はC++に比較的新しいです、std :: vector を使うべきですか? – Eman

+0

'std :: vector >' yesを使うべきです。 –

答えて

3

同じ種類のObjectのインスタンスを含む2つのベクトルがあるとします。そして、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]); 
} 

を使用すると、1つのベクトルのオブジェクトのプロパティを編集した場合、対応するオブジェクトも更新されます。

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

お返事ありがとうございました。私はそれの背後にあるアイデアを得る。しかし、それは私が必要とするものとは少し異なります。私は倍精度を含むベクトルを1つしか持たず、それが1000要素のサイズを持っているとしましょう。私は例えば接続したい。最初の10個の要素から最後の10個の要素までです。したがって、最初の10個の要素を変更すると、最後の10個の要素も変更されます。 – Eman

+0

@ Emanこれも単一のベクターで行うことができます。 –

+0

@πάνταῥεῖもう一度おねがいします。 – Eman

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 
関連する問題