起初我有这个简单的 protobuf 文件
message messagetest
{
...
repeated float samples = 6;
....
}
使用这种方法创建一个头文件
//repeated float samples = 6;
inline int samples_size() const;
inline void clear_samples();
static const int kSamplesFieldNumber = 6;
inline float samples(int index) const;
inline void set_samples(int index, float value);
inline void add_samples(float value);
inline const ::google::protobuf::RepeatedField< float >& samples() const;
inline ::google::protobuf::RepeatedField< float >* mutable_samples();
我基本上在做的是在 for 循环中一一复制所有数据。
int main(int argc, char** argv)
{
messagetest fMessage;
vector<float> fData (1000, 0);
// Create 1000 random values
for (int i = 0; i < fData.size(); i++)
{
fData[i] = rand() % 1001;
}
for (int j = 0; j < fData.size(); j++)
{
fMessage.add_samples(fData[j]);
}
return 0;
}
但我想使用 memcpy 之类的方法来加速复制过程。这只是我想到的一个想法。如果完全错误,请纠正我。头文件中的最后一个声明是:
inline ::google::protobuf::RepeatedField< float >* mutable_samples();
我不知道这种方法有什么作用(缺乏技巧)。但它看起来像一个向量。也许这就是我的问题的解决方案。如果是这样,我不知道如何实现它。