了解 C++ 中的以下数据类型

Understanding the following datatype in c++

片段 1:

// Byte-vector that clears its contents before deletion
typedef std::vector<char, zero_after_free_allocator<char> > CSerializeData;

片段 2:

std::deque<CSerializeData> vSendMsg;

上面的例子来自比特币资源,它为内部使用做了复杂的类型定义。从评论中,我们可以简单地假设 zero_after_free_allocator 用于清理数据。

vSendMsg 到底是什么?它是字符向量的双端队列吗?

更新:

片段 3:

std::deque<CSerializeData>::iterator it = vSendMsg.insert(vSendMsg.end(), CSerializeData());

我们在这里做什么?看起来我们正在插入一个 class 并获取迭代器。我将如何向其中插入数据?

How will I insert data into this?

您有一个指向新插入的 vector 的迭代器,因此 it-> 会影响 vectorit->push_back('x');.

在您对这些事情充满信心之前,您可能希望一步一步地做:

CSerializeData& v = *it;
v.push_back('x');

这样,如果转换为引用失败,您可以在担心 push_back 是否是将数据添加到 vector 的正确方法之前找出原因。