最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?Boost?Assign超詳細(xì)講解

 更新時(shí)間:2022年12月09日 15:38:25   作者:無(wú)水先生  
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)

說(shuō)明

Boost.Assign

Boost.Assign 庫(kù)提供了幫助函數(shù)來(lái)初始化容器或向容器添加元素。如果需要將許多元素存儲(chǔ)在一個(gè)容器中,這些函數(shù)尤其有用。多虧了 Boost.Assign 提供的函數(shù),您不需要重復(fù)調(diào)??用像 push_back() 這樣的成員函數(shù)來(lái)將元素一個(gè)一個(gè)地插入到容器中。

如果您使用支持 C++11 的開(kāi)發(fā)環(huán)境,則可以從初始化列表中獲益。通常您可以將任意數(shù)量的值傳遞給構(gòu)造函數(shù)來(lái)初始化容器。多虧了初始化列表,你不必依賴(lài) C++11 的 Boost.Assign。但是,Boost.Assign 提供了輔助函數(shù)來(lái)向現(xiàn)有容器添加多個(gè)值。這些輔助函數(shù)在 C++11 開(kāi)發(fā)環(huán)境中很有用。

示例 70.1 介紹了一些可以用來(lái)初始化容器的函數(shù)。要使用 Boost.Assign 定義的函數(shù),請(qǐng)包含頭文件 boost/assign.hpp。

示例 70.1。初始化容器

#include <boost/assign.hpp>
#include <boost/tuple/tuple.hpp>
#include <vector>
#include <stack>
#include <map>
#include <string>
#include <utility>
using namespace boost::assign;
int main()
{
  std::vector<int> v = list_of(1)(2)(3);
  std::stack<int> s = list_of(1)(2)(3).to_adapter();
  std::vector<std::pair<std::string, int>> v2 =
    list_of<std::pair<std::string, int>>("a", 1)("b", 2)("c", 3);
  std::map<std::string, int> m =
    map_list_of("a", 1)("b", 2)("c", 3);
  std::vector<boost::tuple<std::string, int, double>> v3 =
    tuple_list_of("a", 1, 9.9)("b", 2, 8.8)("c", 3, 7.7);
}

Boost.Assign 提供了三個(gè)函數(shù)來(lái)初始化容器。最重要的也是您經(jīng)常使用的是 boost::assign::list_of()。您使用 boost::assign::map_list_of() 與 std::map 和 boost::assign::tuple_list_of() 來(lái)初始化容器中的元組。

您不必使用 boost::assign::map_list_of() 或 boost::assign::tuple_list_of()。您可以使用 boost::assign::list_of() 初始化任何容器。但是,如果您使用 std::map 或帶有元組的容器,則必須將模板參數(shù)傳遞給 boost::assign::list_of() 以告知函數(shù)元素如何存儲(chǔ)在容器中。 boost::assign::map_list_of() 和 boost::assign::tuple_list_of() 不需要此模板參數(shù)。

這三個(gè)函數(shù)都返回一個(gè)代理對(duì)象。該對(duì)象重載運(yùn)算符 operator()。您可以多次調(diào)用此運(yùn)算符以將值保存在容器中。即使您訪問(wèn)另一個(gè)對(duì)象而不是容器,容器也會(huì)通過(guò)此代理對(duì)象進(jìn)行更改。

如果你想初始化像 std::stack 這樣的適配器,調(diào)用代理上的成員函數(shù) to_adapter()。然后,代理調(diào)用所有適配器都提供的成員函數(shù) push()。

boost::assign::tuple_list_of() 僅支持 boost::tuple 類(lèi)型的元組。您不能使用此函數(shù)使用標(biāo)準(zhǔn)庫(kù)中的元組來(lái)初始化容器。

示例 70.2 說(shuō)明了如何將值添加到現(xiàn)有容器中。

示例 70.2。向容器添加值

#include <boost/assign.hpp>
#include <vector>
#include <deque>
#include <set>
#include <queue>
int main()
{
  std::vector<int> v;
  boost::assign::push_back(v)(1)(2)(3);
  std::deque<int> d;
  boost::assign::push_front(d)(1)(2)(3);
  std::set<int> s;
  boost::assign::insert(s)(1)(2)(3);
  std::queue<int> q;
  boost::assign::push(q)(1)(2)(3);
}

Boost.Assign 的 boost::assign::push_back()、boost::assign::push_front()、boost::assign::insert() 和 boost::assign::push() 函數(shù)返回一個(gè)代理。您將這些函數(shù)傳遞給要向其添加新元素的容器。然后,調(diào)用代理上的運(yùn)算符 operator() 并傳遞要存儲(chǔ)在容器中的值。

boost::assign::push_back()、boost::assign::push_front()、boost::assign::insert() 和 boost::assign::push() 這四個(gè)函數(shù)以這種方式調(diào)用,因?yàn)榉祷氐拇碚{(diào)用容器上同名的成員函數(shù)。示例 70.2 通過(guò)三次調(diào)用 push_back() 將三個(gè)數(shù)字 1、2 和 3 添加到向量 v。

Boost.Assign 提供了額外的輔助函數(shù),您可以使用它來(lái)向容器添加值,包括 boost::assign::add_edge(),您可以使用它從 Boost.Graph 中獲取圖的代理。

Exercise

Improve this program with Boost.Assign:

#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>
int main()
{
    std::vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout));
    v.push_back(4);
    v.push_back(5);
    v.push_back(6);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout));
}

到此這篇關(guān)于C++ Boost Assign超詳細(xì)講解的文章就介紹到這了,更多相關(guān)C++ Boost Assign內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中全局?jǐn)?shù)組和局部數(shù)組的問(wèn)題

    C語(yǔ)言中全局?jǐn)?shù)組和局部數(shù)組的問(wèn)題

    今天同學(xué)遇到一個(gè)在C語(yǔ)言中全局?jǐn)?shù)組和局部數(shù)組的問(wèn)題,卡了許久,我也沒(méi)有第一時(shí)間看出問(wèn)題,現(xiàn)在把問(wèn)題梳理一下,并給出解決方案,需要的朋友可以參考下
    2012-12-12
  • C++學(xué)習(xí)之Lambda表達(dá)式的用法詳解

    C++學(xué)習(xí)之Lambda表達(dá)式的用法詳解

    Lambda?表達(dá)式(lambda?expression)是一個(gè)匿名函數(shù),Lambda表達(dá)式基于數(shù)學(xué)中的λ演算得名。本文就來(lái)為大家詳細(xì)講講C++中Lambda表達(dá)式的使用,需要的可以參考一下
    2022-07-07
  • 一起聊聊C++中的智能指針

    一起聊聊C++中的智能指針

    C++?是手工管理內(nèi)存的分配和釋放,這給了程序員極大的自由度也給了我們極高的門(mén)檻,弄不好就得內(nèi)存泄露。使用智能指針能更好的管理堆內(nèi)存,本文主要給大家介紹一下c++的智能指針,需要的朋友可以參考下
    2022-07-07
  • OpenCV圖像處理之常見(jiàn)的圖像灰度變換

    OpenCV圖像處理之常見(jiàn)的圖像灰度變換

    這篇文章主要介紹了OpenCV圖像處理之常見(jiàn)的圖像灰度變換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • C++學(xué)習(xí)筆記之初始化列表

    C++學(xué)習(xí)筆記之初始化列表

    初始化列表是類(lèi)中構(gòu)造函數(shù)的一部分,用于實(shí)例化類(lèi)中變量時(shí)賦初值,下面這篇文章主要給大家介紹了關(guān)于C++學(xué)習(xí)筆記之初始化列表的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 深入了解C++的多態(tài)與虛函數(shù)

    深入了解C++的多態(tài)與虛函數(shù)

    這篇文章主要為大家詳細(xì)介紹了C++多態(tài)與虛函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-07-07
  • C++中map和set的使用詳細(xì)攻略

    C++中map和set的使用詳細(xì)攻略

    set set是一種關(guān)聯(lián)式容器,下面這篇文章主要給大家介紹了關(guān)于C++中map和set使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • C語(yǔ)言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例

    C語(yǔ)言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例

    這篇文章主要為大家介紹了C語(yǔ)言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C語(yǔ)言大小端模式、判斷大小端、大小端轉(zhuǎn)換方法詳解

    C語(yǔ)言大小端模式、判斷大小端、大小端轉(zhuǎn)換方法詳解

    這篇文章主要介紹了C語(yǔ)言大小端模式、判斷大小端、大小端轉(zhuǎn)換的相關(guān)資料,大端和小端是數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式,大端模式下高字節(jié)存于低地址,小端模式則相反,大小端問(wèn)題由數(shù)據(jù)類(lèi)型多字節(jié)存儲(chǔ)引起,不同選擇形成不同存儲(chǔ)模式,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

阜城县| 汉源县| 清远市| 斗六市| 灌阳县| 南溪县| 江阴市| 邵东县| 呈贡县| 武城县| 林周县| 南安市| 南华县| 桦川县| 全州县| 九龙坡区| 南阳市| 三河市| 菏泽市| 平安县| 巨鹿县| 萨嘎县| 陆丰市| 旺苍县| 阳泉市| 乌鲁木齐县| 永州市| 宜城市| 胶州市| 昆山市| 鹿泉市| 临沧市| 祁阳县| 满洲里市| 化州市| 天峻县| 友谊县| 库尔勒市| 巴里| 新平| 鄂尔多斯市|