一、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...