我有两个向量,对于某些元素(不是全部),我需要将它们连接起来〜如果我在一个向量中删除/更改此元素,则应该在两个向量中都删除/更改。
类似指针的东西:
int r = 10;
int *p= &r;
*p = 3;
例如,在下一个代码中,它应该将 myvector2[0].a 更改为 7。
#include <iostream>
#include <vector>
using namespace std;
struct elt {
int a, b, c;
};
int main()
{
vector<elt> myvector;
vector <elt> myvector2;
elt elt1 = {1,3,3};
myvector.push_back(elt1);
elt *elt2 = &elt1;
myvector2.push_back(*elt2);
myvector[0].a=7;
cout << myvector[0].a << endl; //7
cout << myvector2[0].a << endl; //1
return 0;
}
我怎样才能做到这一点?请帮忙!!!
原文由 dropky 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 tgmath 所解释的,问题在于您最终会在向量中使用两个不同的对象,因为标准容器按值存储元素。我建议您使用共享指针来正确维护对象的生命周期(注意这使用 C++11 特性):