C 17嘗鮮 基於區間的for迴圈

2021-07-22 01:25:20 字數 1100 閱讀 6074

c++11首次引入了基於區間(範圍)的for迴圈

range-for

for ( range_declaration : range_expression ) loop_statement
其定義如下

}

和傳統for迴圈不同,這種基於區間的for迴圈可以在區間的元素上直接迭代:

std::vectorv = ;

for (int i : v)

std::cout << i << " ";

按照定義,編譯器內部會把這段**擴充套件成:

std::vectorv = ;

}

c++17將其定義修改為

}

從而引來了如下問題:

how the new range-based for loop in c++17 helps ranges ts?

#include #include // a struct to get the first word of a string

struct firstword

};std::string::iterator begin()

endofstring end()

};// declare the comparison operator

bool operator!=(std::string::iterator it, firstword::endofstring p)

// test

int main() )

std::cout << c;

std::cout << std::endl; // print "hello world !!!"

for (auto c : firstword) // works with gcc with c++17 enabled

std::cout << c;

std::cout << std::endl; // print "hello"

}

詳解C 17執行緒池的實現

首先介紹下類的宣告 class threadpool threadpool中只有三個函式,建構函式,析構函式以及乙個enqueue push任務佇列的函式 這些宣告看上去平淡無奇,但看到decltype auto 是不是有些懵?如果你不熟悉c 14可能是不會明白這是個啥東西。decltype是用來推...

c 17中的any模板類

此外在c 17之前,各大類庫基本都提供了自己variant萬能類,c 17 標準庫引入any類可取代之,並提供更好的型別安全和效率。any 類可以容納任意型別 可構造,複製 的值。用途目的之一可避免小物件的動態記憶體分配。例如在乙個陣列中存放基類及子類,實現基類多型訪問。std vectorobjs...

C 17 之 新的 初始化規則

c 11 引入列表初始化,即使用的方式對聚合型別進行初始化.聚合型別在 iso iec14882 2017 11.6.1 描述,表示陣列或類 c 11 的列表初始化規則,在與 auto 聯合使用時經常無法達到程式設計師的期望並出錯,因此 c 17 對列表初始化規則進行增強.在使用具體資料型別 不需要...