由於list_inserter過載了操作符+=和逗號,我們就可以讓**變得簡潔list_inserter& operator,(const t& r) /// 過載 operator ,
使用assign庫時必須使用using指示符,這有這樣才能讓過載的+=,等操作符在作用域內生效
例如:
void assign_case1()
#include
void assign_case2()
乙個小的例子:generic_list& operator ,(const t& u)
assign 庫提供的三個工廠函式 list_of , map_list_of/pair_list_of和tuple_list_of 它們能夠產生generic_list 物件,然後我們就可以像list_inserter一樣使用operator()和operator ,來填充資料。/ generic_list 構造的時候完成資料的填充
void assign_case3()
因為 generic_list 提供到容器型別的隱式轉型操作,所以他可以賦值給任意容器,當然我們也可以顯示呼叫顯示轉換函式
在填充資料時會遇到重複資料輸入的問題,如果用之前的方法就要寫較多的**,我們可以用list_inserter 和 generic_list 都提供了成員函式repeat(), repeat_fun() 和 range()來進去工作量。這三個函式簡要申明如下:// 初始化列表
/// 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& repeat(std::size_t sz, u u);
list& repeat_fu(std::size_t sz, nullary_function fun);
list& range(singlepassiterator first, singlepassiterator last);
簡單的例子使用:
assign 庫不僅支援全部8 個標準容器(vector, string, deque, list, set, multiset, map, multimap),也對容器介面卡提供了適當的支援,包括stack, queue, priority_queue#include
/// 減少重複輸入
void assign_case5()
#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...