【发布时间】:2017-06-23 18:43:50
【问题描述】:
我有一堂课Atom:
class Atom {
public:
Atom();
string name; string mol_name; string MF; // element, molecule name, movable/frozen
int mol_id;
double m,eps,sig,C=0.0,V=0.0,K=0.0,E=0.0;
int ID;
map <string,double> pos; // equivalent of python FM1.9 "x"
map <string,double> prevpos;
map <string,double> force; // " " F
map <string,double> vel; // v
map <string,double> acc; // a
map <string,double> dip; // dipole
map <string,double> efield; // electric field;
};
还有一个这样的原子向量atoms:
vector<Atom> atoms 填充了不同的原子 (0,1,2...) 和相应的变量,例如name.
我想复制,例如atoms[3] 到另一个向量 tmp_atoms。我正在尝试:
std::copy ( atoms.begin() + 3, atoms.begin() + 3, tmp_atoms.begin());
无济于事,因为当我尝试访问 tmp_atoms[0] 或 tmp_atoms[3] 时,我遇到了分段错误。我的访问尝试是:
printf("Make sure tmp_atoms[0] is a thing: %s \n", tmp_atoms[0].name.c_str()); // program seg. faults here
我认为复制类类型有一种特殊情况,因为这在例如整数向量的情况下应该是正确的。请帮忙!
【问题讨论】:
-
解释否决票?
-
这是我能做到的。目标 = 将本身是类实例的向量元素复制到另一个向量
-
您的代码不完整;特别是,它似乎缺少一个
main()和至少一个#include。请edit您的代码,所以这是您的问题的minimal reproducible example,然后我们可以尝试重现并解决它。您还应该阅读How to Ask。 -
@TobySpeight 下次会考虑。 ty
标签: c++ class c++11 vector copy