我喜歡編寫容器不可知的代碼,在我的代碼中使用std
方法,如std::distance()
或std::advance()
。這對於反序列化很有用,我可以傳入不同類型的緩衝區對象(網絡流,字節流......)。C++創建char *迭代器
如何將char*
或uint8_t*
指針轉換爲迭代器?將數據複製到緩衝區不是一種選擇。
我想到的一個選擇是使用std::string
的自定義分配器,但我更願意提供更現成的解決方案(如果可用)。
有什麼建議嗎?
我喜歡編寫容器不可知的代碼,在我的代碼中使用std
方法,如std::distance()
或std::advance()
。這對於反序列化很有用,我可以傳入不同類型的緩衝區對象(網絡流,字節流......)。C++創建char *迭代器
如何將char*
或uint8_t*
指針轉換爲迭代器?將數據複製到緩衝區不是一種選擇。
我想到的一個選擇是使用std::string
的自定義分配器,但我更願意提供更現成的解決方案(如果可用)。
有什麼建議嗎?
有幾種類型的迭代器,由(他們支持的功能)是什麼性質,他們有規定 - 這裏有一個很好的概述http://www.cplusplus.com/reference/iterator/
隨機訪問迭代器需要實現所有在該表中看到的迭代器功能。
原始指針實際上支持所有的操作,因此隨機訪問
運算符
迭代器,可用於所有STL算法和容器。這裏還討論Can raw pointers be used instead of iterators with STL algorithms for containers with linear storage?。
儘管沒有必要,但爲您的指針實現迭代器包裝可能仍然有用 - 這也在上述問題的答案中討論。
沒關係。這些指針無論如何都是作爲迭代器工作的,因爲它們實現了基本的功能。
指針*是*迭代器 - 最常用的甚至是*隨機訪問*。 – Xeo
指針是迭代器。只要注意正確處理'end()' – towi