欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++淺析序列數(shù)據(jù)封裝與優(yōu)化實現(xiàn)方法

 更新時間:2022年12月05日 08:47:49   作者:無水先生  
封裝是面向?qū)ο缶幊讨械陌褦?shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個概念,這樣能避免受到外界的干擾和誤用,從而確保了安全,數(shù)據(jù)封裝是一種把數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)捆綁在一起的機制,數(shù)據(jù)抽象是一種僅向用戶暴露接口而把具體的實現(xiàn)細節(jié)隱藏起來的機制

一、說明

用于優(yōu)化的包裝函數(shù):本節(jié)介紹包裝函數(shù)以優(yōu)化序列化過程。這些函數(shù)標記對象以允許 Boost.Serialization 應用某些優(yōu)化技術。

二、示范和代碼

示例 64.14。在沒有包裝函數(shù)的情況下序列化數(shù)組

#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 使用沒有任何包裝函數(shù)的 Boost.Serialization。該示例創(chuàng)建值 22 serialization::archive 11 0 0 3 0 1 2 并將其寫入字符串。使用包裝函數(shù) boost::serialization::make_array(),寫入的值可以縮短為以下字符串:22 serialization::archive 11 0 1 2。

示例 64.15。使用包裝函數(shù) make_array() 序列化數(shù)組

#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 ()函數(shù)需要地址和數(shù)組的長度。 由于長度是硬編碼的,所以它不需要作為boost::array類型的一部分序列化。

換個說法就是:boost::serialization::make_array() 需要數(shù)組的地址和長度。但是,因為它是預先知道的,所以不需要將長度序列化為數(shù)組的一部分。

任何時候,如果boost::arraystd::vector包含一個可以直接序列化的數(shù)組,都可以使用這個函數(shù)。 其他一般需要序列化的屬性不能被序列化。

另一個 Boost.Serialization 提供的封裝函數(shù)是boost::serialization::make_binary_object ()。 與boost::serialization::make_array ()類似,它也需要地址和長度。boost::serialization::make_binary_object ()函數(shù)只是為了用來序列化沒有底層結(jié)構(gòu)的二進制數(shù)據(jù),而boost::serialization::make_array ()是用來序列化數(shù)組的。

只要 std::array 或 std::vector 等類包含可以直接序列化的數(shù)組,就可以使用 boost::serialization::make_array()。跳過通常也會被序列化的其他成員變量(參見示例 64.15)。

Boost.Serialization 還提供包裝器 boost::serialization::make_binary_object()。類似于 boost::serialization::make_array(),此函數(shù)需要一個地址和一個長度。 boost::serialization::make_binary_object() 僅用于沒有底層結(jié)構(gòu)的二進制數(shù)據(jù),而 boost::serialization::make_array() 用于數(shù)組。

到此這篇關于C++淺析序列數(shù)據(jù)封裝與優(yōu)化實現(xiàn)方法的文章就介紹到這了,更多相關C++序列數(shù)據(jù)封裝與優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言常用標準頭文件使用實例

    C語言常用標準頭文件使用實例

    在C的系列語言程序中,頭文件(通常擴展名為.h)被大量使用,它通常包含函數(shù)、變量、結(jié)構(gòu)體等的聲明和定義,以及一些宏定義和類型定義,這篇文章主要給大家介紹了關于C語言常用標準頭文件使用的相關資料,需要的朋友可以參考下
    2024-08-08
  • C語言中將日期和時間以字符串格式輸出的方法

    C語言中將日期和時間以字符串格式輸出的方法

    這篇文章主要介紹了C語言中將日期和時間以字符串格式輸出的方法,分別是ctime()函數(shù)和asctime()函數(shù),注意參數(shù)區(qū)別,需要的朋友可以參考下
    2015-08-08
  • 詳解C語言進程同步機制

    詳解C語言進程同步機制

    這篇文章主要介紹了詳解C語言進程同步機制的的相關資料,文中代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • C語言近萬字為你講透棧和隊列

    C語言近萬字為你講透棧和隊列

    對于線性表,我們可能要執(zhí)行下列操作:訪問表的第k個結(jié)點、在k這個結(jié)點之前或者之后插入一個新結(jié)點,抑或是刪除第k個結(jié)點等等操作,其中我們會遇到值對第一個或者最后一個結(jié)點插入、刪除、和訪問值的線性表,我們給它們以特殊的名稱:棧、隊列、雙端隊列
    2022-05-05
  • C語言數(shù)據(jù)結(jié)構(gòu)算法之實現(xiàn)快速傅立葉變換

    C語言數(shù)據(jù)結(jié)構(gòu)算法之實現(xiàn)快速傅立葉變換

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)算法之實現(xiàn)快速傅立葉變換的相關資料,需要的朋友可以參考下
    2017-06-06
  • C++ Boost Utility超詳細講解

    C++ Boost Utility超詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-12-12
  • c++異常處理機制示例及詳細講解

    c++異常處理機制示例及詳細講解

    本篇文章主要是對c++異常處理機制示例進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • C語言實現(xiàn)電話訂餐管理系統(tǒng)

    C語言實現(xiàn)電話訂餐管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)電話訂餐管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言版猜數(shù)字小游戲

    C語言版猜數(shù)字小游戲

    這篇文章主要為大家詳細介紹了C語言版猜數(shù)字小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言使用鏈表實現(xiàn)學生籍貫管理系統(tǒng)

    C語言使用鏈表實現(xiàn)學生籍貫管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言使用鏈表實現(xiàn)學生籍貫管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論