gpt4 book ai didi

c++ - 使用 memcpy 将 std::vector 复制到 protobuf 的重复字段

转载 作者:可可西里 更新时间:2023-11-01 15:35:49 28 4
gpt4 key购买 nike

起初我有这个简单的 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();

我不知道这个方法是做什么的(缺乏技巧)。但它有点像 vector 。也许这就是我的问题的解决方案。如果是这样,我不知道如何实现。

最佳答案

因为这还没有,我喜欢单行:

*fMessage.mutable_samples() = {fData.begin(), fData.end()};

关于c++ - 使用 memcpy 将 std::vector 复制到 protobuf 的重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15499641/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com