gpt4 book ai didi

c++ - 如何在 C++ 中 memcpy 迭代器元素?

转载 作者:太空狗 更新时间:2023-10-29 20:13:14 24 4
gpt4 key购买 nike

我在 C++ 中有以下代码:

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)'

问题是什么以及如何解决?迭代器不能这样复制吗?

最佳答案

memcpy 的第二个参数应该是Student 对象的地址,所以你应该使用&*iterator 而不是iterator。由于运算符重载,这两者并不等价。但我建议根本不要使用 memcpy

关于c++ - 如何在 C++ 中 memcpy 迭代器元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com