標準庫特殊設施

2021-10-01 15:56:06 字數 1798 閱讀 4221

一、tuple型別

1、定義和初始化tuple

類似pair,每個pair都恰好有兩個成員,tuple可以有任意數量的成員;

tuplet; //值初始化

tuplet1(1,2,3); //初始值初始化

auto t = make_tuple(1,2,3); //類似make_pair函式

get<0>(t); //get標準庫函式訪問tuple成員,返回t的第乙個成員的引用

tuple_element<1, decltype(t)>::type cnt = get<0>(t); //type為成員型別

decltype(t); //t的型別

size_t sz = tuple_size::value; //返回tuple中成員的數量

關係和相等運算子:對每對兒成員使用關係和相等運算子都必須是合法的

tuplet1;

tuplet2;

tuplet3;

t1 == t2; //錯誤,不能比較string和int

t1 == t3; //錯誤,成員數量不同

二、bitset型別

1、初始化bitset

用unsigned值初始化bieset

//bs1比初始值小;初始值的高位被丟棄

//二進位制序列為1 1110 1110 1111

bitset<13> bs1(0xbeef);

//bs2比初始值大;高位被置0

//二進位制序列為0000 1011 1110 1110 1111

bitset<13> bs2(0xbeef);

//在64位機器中,oull是64個0位元,因此~0ull是64個1

//0-63位為1,64-127位為0

bitset<128> bs3(~0ull);

用string初始化bitset

//bs4中第三位到第0位被設定為1100,剩餘位被置為0

bitset<32> bs4("1100");

string s("11111111011100001100");

//從str[5]的4個字元初始化bs5

bitset<32> bs5(s,5,4);

//使用最後4個字元初始化bs6

bitset<32> bs6(s, s.size()-4);

2、bitset操作

b.any() //b中存在置位的二進位制位嗎

b.all() //b中所有位都職位了嗎

b.none() //b中所有位都復位了嗎

b.count() //b中置位的數量

b.size() //乙個constexpr函式,返回b的位數

b.test(pos) //pos位置的位是置位嗎

b.set(pos, v) //pos位,置位v,v的預設值位1

b.set() //b中所有位都置位

b.reset(pos) //pos位,復位

b.reset() //b中所有位都復位

b.filp(pos) //pos位改變狀態

b.filp() //b中所有位都改變狀態

b[pos] //訪問pos位的狀態,也可改變該位的狀態

b.to_ulong() //返回乙個位模式與b相同的unsigned long或unsigned long long值,如果不能放入指定結果中,則丟擲overflow_error異常

b.to_ullong()

b.to_string(zero, one) //返回乙個string,表示b中的位模式,zero和one的預設值分別為0和1

os《三、正規表示式

十七 標準庫特殊設施

tuple,當我們希望將一些資料組合成單一物件,但又不想麻煩的定義乙個新資料結構來表示這些資料時,使用tuple,簡易struct?tuplethree 是explicit,所以不能使用 auto item make tuple 1,abc 5.0 成員是未命名的,所以需要使用get標準庫函式模板 ...

17 c 標準庫特殊設施

include include include include include include using namespace std void tupletest void bitsettest void regextest void randomtest void iotest int main...

C 相關 部分標準庫特殊設施

tuple是c 11新標準裡的型別。它是乙個類似pair型別的模板。pair型別是每個成員變數各自可以是任意型別,但是只能有倆個成員,而tuple與pair不同的是它可以有任意數量的成員。但是每個確定的tuple型別的成員數目是固定的。宣告如下 tupletp 1,2,6.2 取值 cout get...