網站首頁 編程語言 正文
一、說明
用于優化的包裝函數:本節介紹包裝函數以優化序列化過程。這些函數標記對象以允許 Boost.Serialization 應用某些優化技術。
二、示范和代碼
示例 64.14。在沒有包裝函數的情況下序列化數組
#include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> #include <boost/array.hpp> #include <iostream> #include <sstream> using namespace boost::archive; std::stringstream ss; void save() { text_oarchive oa{ss}; boost::array<int, 3> a{{0, 1, 2}}; oa << a; } void load() { text_iarchive ia{ss}; boost::array<int, 3> a; ia >> a; std::cout << a[0] << ", " << a[1] << ", " << a[2] << '\n'; } int main() { save(); load(); }
Example?64.14
示例 64.14 使用沒有任何包裝函數的 Boost.Serialization。該示例創建值 22 serialization::archive 11 0 0 3 0 1 2 并將其寫入字符串。使用包裝函數 boost::serialization::make_array(),寫入的值可以縮短為以下字符串:22 serialization::archive 11 0 1 2。
示例 64.15。使用包裝函數 make_array() 序列化數組
#include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> #include <boost/serialization/array.hpp> #include <array> #include <iostream> #include <sstream> using namespace boost::archive; std::stringstream ss; void save() { text_oarchive oa{ss}; std::array<int, 3> a{{0, 1, 2}}; oa << boost::serialization::make_array(a.data(), a.size()); } void load() { text_iarchive ia{ss}; std::array<int, 3> a; ia >> boost::serialization::make_array(a.data(), a.size()); std::cout << a[0] << ", " << a[1] << ", " << a[2] << '\n'; } int main() { save(); load(); }
boost::serialization::make_array ()
函數需要地址和數組的長度。 由于長度是硬編碼的,所以它不需要作為boost::array
類型的一部分序列化。
換個說法就是:boost::serialization::make_array() 需要數組的地址和長度。但是,因為它是預先知道的,所以不需要將長度序列化為數組的一部分。
任何時候,如果boost::array
或std::vector
包含一個可以直接序列化的數組,都可以使用這個函數。 其他一般需要序列化的屬性不能被序列化。
另一個 Boost.Serialization 提供的封裝函數是boost::serialization::make_binary_object ()
。 與boost::serialization::make_array ()
類似,它也需要地址和長度。boost::serialization::make_binary_object ()
函數只是為了用來序列化沒有底層結構的二進制數據,而boost::serialization::make_array ()
是用來序列化數組的。
只要 std::array 或 std::vector 等類包含可以直接序列化的數組,就可以使用 boost::serialization::make_array()。跳過通常也會被序列化的其他成員變量(參見示例 64.15)。
Boost.Serialization 還提供包裝器 boost::serialization::make_binary_object()。類似于 boost::serialization::make_array(),此函數需要一個地址和一個長度。 boost::serialization::make_binary_object() 僅用于沒有底層結構的二進制數據,而 boost::serialization::make_array() 用于數組。
原文鏈接:https://yamagota.blog.csdn.net/article/details/128154304
相關推薦
- 2022-11-24 使用sqlserver官方驅動包調用存儲過程遇到的坑及解決方法_MsSql
- 2022-05-17 springcloudgateway轉發websocket異常解決
- 2022-10-29 python實現k均值聚類(kMeans)基于numpy
- 2022-05-29 C#實現文字轉語音功能_C#教程
- 2023-11-26 String字符串類
- 2022-09-04 C++?實現單鏈表創建、插入和刪除_C 語言
- 2023-09-18 Tomcat控制臺中文亂碼
- 2022-05-15 python數字類型和占位符詳情_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支