0
讓我先說我不能使用boost,因爲這應該是練習。或者是一種懲罰。現在還不確定。序列化任意類型的STL容器(包括其他容器)C++
我必須寫一個函數,它看起來是這樣的:
template <class T1, class T2>
void serialize<T1, T2>(std::map<T1, T2> in, std::vector<uint8_t>* buf);
我會遍歷然後在地圖上,每一個序列化對每個條目元素。但是,我遇到了一個問題。
現在我有的問題是,T1可能是,比如說,一個std ::向量填充其他std ::向量的。我還有一個功能類似於上述情況,並假定正常工作,就像這樣:
template <class T1>
void serialize<T1>(std::vector<T1> in, std::vector<uint8_t>* buf);
這將有相同的問題,如上面的功能。我是否應該放棄這個並採用不同的方法?或者這仍然可行?我只是想念一些東西?
您是否考慮過反序列化?鑑於輸入緩衝區,你怎麼知道那裏的序列化? –
這真的既不在這裏,也不在那裏,但我想在緩衝區裏有一個標誌,在那裏讀取開始......類似於1,2,3,4等。 – AlterionX
它是* here *。序列化很簡單:編譯器知道你要序列化的類型,不需要RTTI(除非你決定「隱藏」它們並序列化一個虛擬基類)。然而,你計劃投放的那些旗幟?......那些是RTTI性質的!因爲它們是** Runtime **類型信息,所以模板不會像你想象的那樣幫助你。在做出決定之前,認真考慮雙方的具體需求。 –