[英]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;
上面的例子來自比特幣來源,它為內部使用做了復雜的typedef。 從注釋中,我們可以簡單地假設zero_after_free_allocator
用於清理數據。
vSendMsg
到底是什么? 它是字符向量的雙端隊列嗎?
更新:
片段3:
std::deque<CSerializeData>::iterator it = vSendMsg.insert(vSendMsg.end(), CSerializeData());
我們在這里做什么? 看起來我們正在插入一個類並獲得迭代器。 如何將數據插入其中?
如何將數據插入其中?
您對新插入的vector
有一個迭代器,因此it->
會影響該vector
: it->push_back('x');
。
在對這些事情有信心之前,您可能希望一次只做一個步驟:
CSerializeData& v = *it;
v.push_back('x');
這樣,如果轉換為引用失敗,則可以在擔心push_back
是否是向vector
添加數據的正確方法之前弄清楚原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.