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

时间:2015-12-28 05:41:15

标签: c++ vector bitcoin deque

摘录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());

我们在这做什么?看起来我们正在插入一个类并获得迭代器。我将如何将数据插入此内容?

1 个答案:

答案 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的正确方法之前解决原因。