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 對列表初始化規則進行增強.在使用具體資料型別 不需要...