我在C++下面的代碼:如何在C++中memcpy迭代器元素?
typedef struct
{
int age;
int roomNumber;
} Student;
Student student;
student.age = 20;
student.roomNumber = 10;
vector<Student> studentV;
student.push_back(student);
student.push_back(student);
student.push_back(student);
Student student1[3];
int i;
for(vector<Student>::const_iterator iterator = studentV.begin();
iterator != studentV.end(); ++iterator,++i)
{
memcpy(&student1[i], iterator, sizeof(Student));
}
它顯示了部分的memcpy以下消息:
error: cannot convert 'std::vector<Student>::const_iterator {aka __gnu_cxx::__normal_iterator<const Student*, std::vector<Student> >}' to 'const void*' for argument '2' to 'void* memcpy(void*, const void*, size_t)'
這是什麼問題,如何解決?迭代器是不是可以像這樣複製?
只要使用'的std :: copy'。 – chris
一個迭代器不是一個指針..你可以通過迭代器(* iterator)得到*指向的值,然後得到它的地址'&(* iterator)'......還沒有真正嘗試過它。 – jsantander