boost庫實用工具之assign

2021-07-31 06:59:21 字數 2092 閱讀 3033

list_inserter& operator,(const t& r) /// 過載 operator ,

由於list_inserter過載了操作符+=和逗號,我們就可以讓**變得簡潔

使用assign庫時必須使用using指示符,這有這樣才能讓過載的+=,等操作符在作用域內生效

例如:

void assign_case1()

#include 

void assign_case2()

generic_list& operator ,(const t& u)

乙個小的例子:

/ generic_list 構造的時候完成資料的填充

void assign_case3()

assign 庫提供的三個工廠函式 list_of , map_list_of/pair_list_of和tuple_list_of 它們能夠產生generic_list 物件,然後我們就可以像list_inserter一樣使用operator()和operator ,來填充資料。

因為 generic_list 提供到容器型別的隱式轉型操作,所以他可以賦值給任意容器,當然我們也可以顯示呼叫顯示轉換函式

// 初始化列表

/// 3個工廠函式 list_of, map_list_of/pair_list_of和tuple_list_of.

void assign_case4()

map m = list_of(make_pair(1, "one"))(make_pair(2, "two"));

// m = [(1, 「one」) (2, 「two」)]

map m1 = map_list_of(1, 2)(3, 4)(5, 6);

//m1 = [(1, 2)(3, 4)(5, 6)]

map m2= map_list_of(1, "one")(2, "two");

//m2 = [(1, "one")(2, "two")]

}

在填充資料時會遇到重複資料輸入的問題,如果用之前的方法就要寫較多的**,我們可以用list_inserter 和 generic_list 都提供了成員函式repeat(), repeat_fun() 和 range()來進去工作量。這三個函式簡要申明如下:

list& repeat(std::size_t sz, u u);

list& repeat_fu(std::size_t sz, nullary_function fun);

list& range(singlepassiterator first, singlepassiterator last);

簡單的例子使用:

#include 

/// 減少重複輸入

void assign_case5()

assign 庫不僅支援全部8 個標準容器(vector, string, deque, list, set, multiset, map, multimap),也對容器介面卡提供了適當的支援,包括stack, queue, priority_queue

#include 

#include

void assign_case6()

cout

<< endl;

queue

q = (list_of("china")("us")("uk")).

repeat(2, "russia").to_adapter();

push(q)("germany");

for (; !q.empty();)

cout

<< endl;

priority_queue pq = (list_of(1.414), 1.732, 2.236).to_adapter();

push(pq), 3.414, 2.71828;

for (; !pq.empty();)

}

boost之實用工具

1.noncopyable用於禁止複製和拷貝的類繼承。宣告拷貝和賦值函式為私有,將執行時的錯誤轉化為編譯期的錯誤。include include using namespace std using namespace boost class mynoncopy private mynoncopy c...

Boost 庫中的實用工具類使用入門

實用工具類開發和維護會耗費程式設計師的時間。boost 通過提供幾個高質量的庫,從而簡化了此過程,您可以將這些庫輕鬆整合到現有的 庫中。本文簡單概述一些較流行的 boost 實用工具類,並幫助您了解如何將它們投入使用。實用工具類 utility classes 在幾乎任何適當規模的 c 專案中都是必...

linux實用工具

基本實用工具 ls 顯示檔名 list cat 顯示文字檔案內容 rm i 刪除檔案 remove i開啟選項 less more 分屏顯示檔案 hostname 顯示系統名 檔案操作 cp sourcefile destinationfile 複製檔案copy mv oldname newname...