嗨! 我很难尝试将指针向量复制到Point。 我有一个
vector<Point*> oldVector
我希望将此向量复制到其他向量中。所以我使用了复制构造函数。我这样做了
vector<Point*> newVector = vector<Point*>(oldVector.begin(),oldVector.end());
不幸的是,如果我运行此功能,我会收到异常/错误。
矢量交互者不兼容
可能是什么问题??
EDIT 迭代器必定存在更大的问题,似乎我根本不能使用迭代器。我想在彼此中添加两个stl向量,所以我使用了写这样的
vector<int> a, b;
b.insert(b.end(), a.begin(), a.end());
我在执行此行时遇到了sama异常/错误
答案 0 :(得分:18)
那将是
vector<Point*> *newVector = new vector<Point*>(oldVector.begin(),oldVector.end());
或
vector<Point*> newVector(oldVector.begin(),oldVector.end());
创建对象时,只能在从堆分配时使用赋值。否则,您只需将构造函数参数放在新变量名后的括号内。
或者,以下内容更为简单:
vector<Point*> newVector(oldVector);
答案 1 :(得分:1)
vector<Point*> newVector = vector<Point*>(oldVector.begin(),oldVector.end());
为什么会这样?
为什么不这样:
vector<Point*> newVector(oldVector.begin(),oldVector.end());
...。后者越好!
更好的是,
vector<Point*> newVector(oldVector);
答案 2 :(得分:0)
你想要
Vector<Point*> newVector(oldVector.begin(), oldVector.end());
答案 3 :(得分:0)
这应该有效(仅使用std::vector<int>
测试)。一定有其他一些问题。 Point
是否有复制构造函数?
答案 4 :(得分:0)
因为原始容器的类型相同,std::vector<Point*>
,所以不需要使用范围构造函数;只需使用复制构造函数!
std::vector<Point*> newVector(oldVector);
但这不是主要关注的问题。这里的主要问题是共享指针。对自己拥有指向数据的人非常清楚。小心双删!