摘录1:
// Byte-vector that clears its contents before deletion
typedef std::vector<char, zero_after_free_allocator<char> > CSerializeData;
摘录2:
std::deque<CSerializeData> vSendMsg;
上面的例子来自比特币来源,它为内部使用提供了复杂的typedef。从评论中,我们可以简单地假设zero_after_free_allocator
用于清理数据。
究竟是什么vSendMsg
?它是chars矢量的副本吗?
更新
摘录3:
std::deque<CSerializeData>::iterator it = vSendMsg.insert(vSendMsg.end(), CSerializeData());
我们在这做什么?看起来我们正在插入一个类并获得迭代器。我将如何将数据插入此内容?
答案 0 :(得分:1)
我如何在此处插入数据?
您有新插入的<h1> Without using Rowspan </h1>
<table border="1">
<tr>
<th>How</th>
<th>it</th>
<th>Work</th>
<th>Rowspan</th>
<th>First</th>
</tr>
<tr>
<td>10</td>
<td >20</td>
<td >30</td>
<td >40</td>
<td >50</td>
</tr>
<tr>
<td>60</td>
</tr>
<tr>
<td>70</td>
<td>80</td>
<td>90</td>
<td>100</td>
<td>110</td>
</tr>
</table>
<hr>
<h1> using Rowspan </h1>
<table border="1">
<tr>
<th>How</th>
<th>it</th>
<th>Work</th>
<th>Rowspan</th>
<th>First</th>
</tr>
<tr>
<td rowspan="2">10</td>
<td rowspan="2">20</td>
<td rowspan="2">30</td>
<td rowspan="2" >40</td>
<td >50</td>
</tr>
<tr>
<td>60</td>
</tr>
<tr>
<td>70</td>
<td>80</td>
<td>90</td>
<td>100</td>
<td>110</td>
</tr>
</table>
<hr>
<h1> using colspan </h1>
<table border="1">
<tr>
<th colspan="5">Hello World</th>
</tr>
<tr>
<th>How</th>
<th>it</th>
<th>Work</th>
<th>Rowspan</th>
<th>First</th>
</tr>
<tr>
<td rowspan="2">10</td>
<td rowspan="2">20</td>
<td rowspan="2">30</td>
<td rowspan="2" >40</td>
<td >50</td>
</tr>
<tr>
<td>60</td>
</tr>
<tr>
<td>70</td>
<td>80</td>
<td>90</td>
<td>100</td>
<td>110</td>
</tr>
</table>
的迭代器,因此vector
会影响it->
:vector
。
在您对这些事情充满信心之前,您可能希望一次只做一步:
it->push_back('x');
这样,如果转换为引用失败,您可以在担心CSerializeData& v = *it;
v.push_back('x');
是否是将数据添加到push_back
的正确方法之前解决原因。