了解 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->
会影响 vector
:it->push_back('x');
.
在您对这些事情充满信心之前,您可能希望一步一步地做:
CSerializeData& v = *it;
v.push_back('x');
这样,如果转换为引用失败,您可以在担心 push_back
是否是将数据添加到 vector
的正确方法之前找出原因。
片段 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->
会影响 vector
:it->push_back('x');
.
在您对这些事情充满信心之前,您可能希望一步一步地做:
CSerializeData& v = *it;
v.push_back('x');
这样,如果转换为引用失败,您可以在担心 push_back
是否是将数据添加到 vector
的正确方法之前找出原因。