我有2个班级处理通信数据 在一个类中,数组信息存储为固定数组
uint8 msg[512];
//fixed array to reduce mem fragmentation on target
我想记忆复制到第二课的载体
vector<uint16> schbuff;
// not set offend so mem fragmentation on such a issue
我正在使用c ++ c99所以我正在寻找一种不将每个元素传递给新容器的方法
如果它们都是同一类型,它就不会出现这样的问题,但对c ++来说是新手,所以任何帮助都会受到赞赏
答案 0 :(得分:2)
您可以使用std::copy
:
#include <algorithm> // for copy
#include <iterator> // for begin, end, back_inserter
std::copy(std::begin(msg), std::end(msg), std::back_inserter(schbuff));
答案 1 :(得分:2)
您可以使用构造函数
vector<uint16> schbuff( msg, msg + 512 );
或者可以使用成员函数赋值
schbuff.assign( msg, msg + 512 );
或者可以使用成员funcrion保留。例如
vector<uint16> schbuff;
schbuff.reserve( 512 );
std::copy( msg, msg + 512, std::back_inserter( msg ) );
答案 2 :(得分:0)
const int msg_size = 512;
uint8 msg[msg_size];
vector<uint8> msg_vec;
msg_vec.assign(msg, msg + msg_size);
编辑:注意到类型不同。但我会保留答案,例如如何放入矢量。