最初はこの単純な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ループですべてのデータを1つずつコピーすることです。
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();
この方法が何をするのかわかりません(スキル不足)。しかし、それは一種のベクトルのように見えます。多分それは私の問題の解決策です。もしそうなら、私はそれを実装する方法がわかりません。