c++ - 如何使用 std::copy 复制类实例变量的所有元素?
问题描述
我有一个名为 CANMessage 的类,它包含unsigned _id
,const char *_data
和char _len
其他一些东西,但我会跳过它:
CANMessage::CANMessage(unsigned _id, const char *_data, char _len...)
它是 mbed API CAN 的一部分,但我希望只包含有用的信息。如果需要,它在这里:https ://os.mbed.com/docs/mbed-os/v5.11/mbed-os-api-doxy/_c_a_n_8h_source.html
因此,例如,如果我像这样创建了一个 CANMessage 实例:
CANMessage message;
can.read(message); //stores a CAN frame in CANMessage
我可以像这样访问数据:
for (int i=0;i<message.len;i++) {
pc.printf(" %02X",*(message.data+i)); //prints out the data one by one
}
我有一个名为 sendToPc 的向量,它以特定格式发送此数据。
vector<uint8_t> sendToPc;
因此,前 4 个元素将存储长度,其余位存储数据。但我不太明白如何将数据复制到其中,因为我不明白 std::copy 是如何工作的。我对这里的输入迭代器感到困惑。
std::copy(/*first input op, last input op, output operator/*)
它是否需要指向该数据的指针?我觉得第一个输入是 message.data,但是在向量中我可以只做 vect.end() 来获取最后一个元素,但是在这种情况下如何获取数据的最后一个元素呢?
我相信输出迭代器会是sendToPc.begin() + 4
.
如何将类实例消息的所有数据复制到我的向量 sendToPc,从 sendToPc[4] 开始存储?
请注意我使用的是 C++98。
编辑:这会起作用吗?只要我先将长度存储在那里...
for (int i=0;i<message.len;i++) {
CANdata.push_back(*(message.data+i));
}
解决方案
推荐阅读
- azure - 如何通过 Graph API 仅获取用户所有属性的列表
- ionic-framework - 在本地时区打开 ion-datetime
- javascript - 自执行函数的奇怪之处
- python - 在Python中使用字符串上的字典解码消息
- android - 使用 Volley 从服务器成功响应后隐藏 ProgressBar
- angular - Angular 6 Unable to read Octet-stream in HttpClient 错误消息:“解析过程中的 Http 失败...”
- sql - PostgreSQL 行读锁
- c - 查找所有可用的 3 位数组合
- ios - 在可本地化文件中将文本编码更改为无显式
- git - 发生更改时,Git 不会检测到文件中的冲突