Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何连接向量的两个元素? 我想知道C++中是否有一种方法来连接向量的两个元素,例如:STD::向量,如果一个变量被改变,另一个会自动改变。如果没有,还有其他方法吗_C++_C++11_Shared Ptr_Stdvector - Fatal编程技术网

如何连接向量的两个元素? 我想知道C++中是否有一种方法来连接向量的两个元素,例如:STD::向量,如果一个变量被改变,另一个会自动改变。如果没有,还有其他方法吗

如何连接向量的两个元素? 我想知道C++中是否有一种方法来连接向量的两个元素,例如:STD::向量,如果一个变量被改变,另一个会自动改变。如果没有,还有其他方法吗,c++,c++11,shared-ptr,stdvector,C++,C++11,Shared Ptr,Stdvector,谢谢。假设有两个向量包含同一类对象的实例。然后使用shared\u ptr可以引用相同的对象: 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]); } 向

谢谢。

假设有两个向量包含同一类
对象的实例。然后使用
shared\u ptr
可以引用相同的对象:

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;
矢量v2;
对于(int i=0;ivalue=12;

cout value假设有两个向量包含同一类
对象的实例
。然后使用
共享\u ptr
可以引用同一对象:

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;
矢量v2;
对于(int i=0;ivalue=12;
cout值<代码>A类{
…您的类定义
公众:
int x;
};
typedef std::共享\u ptr APtr;
typedef std::向量AVect;
AVect v;
APtr ptr_a=std::make_shared();//使用std::make_shared比代码中的裸新分配更好。
v、 推回(ptr_a);
v、 推回(ptr_a);
v[0]->x=3;//也修改v[1]
A类{
…您的类定义
公众:
int x;
};
typedef std::共享\u ptr APtr;
typedef std::向量AVect;
AVect v;
APtr ptr_a=std::make_shared();//使用std::make_shared比代码中的裸新分配更好。
v、 推回(ptr_a);
v、 推回(ptr_a);
v[0]->x=3;//也修改v[1]

您可以在向量中存储
std::shared_ptr
。当您将问题标记为这样时,您是否已经尝试过,但它对您无效?@πάνταῥεῖ 谢谢你的回答。我对C++是比较新的,我应该使用STD::vector?你应该使用“代码> STD::矢量<代码>:或者代码> STD::SyrdypPTR<代码>。或者,如果你小心,你可以存储简单指针。你可以在代码中存储<代码> STD::SyrdypTrt/Cuth>。当你标记了你的问题时,你已经尝试过了,但它没有工作。为了你?@πάνταῥεῖ 谢谢你的回答。我对C++是比较新的,我应该用STD::vector?你应该使用“代码> STD::矢量<代码>:或者代码> STD::SyrdypPTR<代码>。或者,如果你很小心,你可以存储简单的指针。谢谢你的答案。我知道了它背后的想法。但是,它和我需要的有点不同。我只有一个向量包含。双倍,假设它的大小为1000个元素。例如,我想连接前10个元素和后10个元素。因此,当我更改前10个元素时,后10个元素也会更改。@πάνταῥεῖ 再次感谢。您还可以使用emplace_back和make_shared
v1。emplace_back(make_shared())
非常感谢你的回答。我明白了它背后的意思。但是,它与我需要的有点不同。我只有一个包含双精度的向量,假设它的大小为1000个元素。我想分别连接前10个元素和后10个元素。因此,当我更改前10个元素时,最后10个元素元素也会发生变化。@πάνταῥεῖ 再次感谢。您也可以使用emplace_back和make_shared
v1。emplace_back(make_shared());
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