У меня есть класс Atom
:Копировать класс-тип элемента по индексу от одного вектора к другому C++
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
Я думаю, что есть специальный случай для копирования типов классов, потому что это должно быть правильно в случае, например, векторов целых чисел. Пожалуйста помогите!
объяснять downvote? – khaverim
Пожалуйста, ** ** ваш вопрос с [mcve] или [SSCCE (Short, Self Contained, Correct Example)] (http://sscce.org) – NathanOliver
Это примерно как mcve, как я могу это сделать. Goal = копировать векторный элемент, который сам является экземпляром класса, другому вектору – khaverim