深入應用C 11 筆記(四)

2021-08-19 17:32:10 字數 1814 閱讀 7134

1.8 tupe元組

構造tuple

//標頭檔案為: 使用make_tuple 構造乙個tuple

char* sendpack;

int nsendsize;

tuple

char*, int> tp = make_tuple(sendpack, nsendsize);

//使用std::tie構造

tuple

char*, int> tp1 = std::tie(sendpack, nsendsize);

//這個tuple和下面的結構體等價

struct tp

用tuple就可以建立這個結構體,而作用是一樣的。

獲取tuple的值

const

char* data = std::get

<0>(tp);//獲取上第乙個值

int len = std::get

<1>(tp);//獲取第二個值

也可以通過std::tie解包tuple

std::string  str;

intlen;

std::tie(str,len) = tp;

解包時,我們如果只想解某個位置的值時,可以用std::ignore佔位符來表示不解某個位置的值

std:

:tie(str,std:

:ignore) = tp;

通過tuple_cat連線多個tuple(c++ 14 !!!)

std::tuple t1(10, "test", 3.14);

int n = 7;

auto t2 = std::tuple_cat(t1, std::make_pair("foo", "bar"), t1, std::tie(n));

n = 10;

//t2:(10, test, 3.14, foo, bar, 10, test, 3.14, 10)

遍歷tuple(詳見cppreference)

#include 

#include

#include

// helper function to print a tuple of any size

template

struct tupleprinter

};template

struct tupleprinter1>

};template

void print(const

std::tuple& t)

// end helper function

int main()

//(10, test, 3.14, foo, bar, 10, test, 3.14, 10)

c++11 的標準規定,函式可以返回花括號包圍的值的列表。

深入應用C 11 筆記 非同步操作 (九)

c 11 提供了非同步操作相關的類 std future作為非同步結果的傳輸通道,用於獲取執行緒函式的的返回值 std promise用於包裝乙個值,將資料和future繫結起來,方便執行緒賦值 std package task將函式和future繫結起來,以便非同步呼叫。1.1 獲取執行緒函式返回...

深入理解C 11 筆記

include using namespace std classa a 對於含有堆記憶體的類,需要提供深拷貝的拷貝建構函式,避免預設的拷貝構造使用淺拷貝導致堆記憶體的重複刪除。a const a a m ptr new int a.m ptr 通過移動構造,a 作為函式引數,只使用淺拷貝避免臨時物...

c 11 筆記,c 筆記

find if的使用 bool isthe const string s1 vectora auto aaa find if a.begin a.end isthe aaa為第乙個符合要求的位址。aaa為取到的值。aaa為迭代器 lambda 表示式 auto f cout auto aaa fin...