如何使用std :: copy复制类实例变量的所有元素?

时间:2019-05-08 10:16:42

标签: c++ c++98

我有一个名为CANMessage的类,它包含unsigned _idconst char *_datachar _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 [4]开始存储,将类实例消息的所有数据复制到我的向量sendToPc中?

请注意,我使用的是C ++ 98。

编辑:这可以代替吗?只要我先把长度存储在那里...

for (int i=0;i<message.len;i++) {
    CANdata.push_back(*(message.data+i));
}

0 个答案:

没有答案