日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环

發布時間:2025/3/19 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

普通的for循環

for_each函數模板

基于范圍的for循環

普通用的像:

for(int?i?=?0;?i?

這種的for循環就不說了,?下面主要說一下后兩個,做個筆記。

以后用for循環可以考慮下使用后兩種方法!

對于C++中的for_each:

首先它實際上是一個函數模板,包含在這個頭文件中,它的原型如下:

template?

Function?for_each?(InputIterator?first,?InputIterator?last,?Function?fn);

for_each 的前兩個參數是迭代器,用來定義容器的一個區間,第三個參數是一個函數對象,直接把你定義的一個函數的函數名放到第三個參數的位置上也行。(那個迭代器可以簡單地理解為一個指針)

這個fn只能有一個參數,然后這個for_each就是把從 first 到 last 這個區間內的所有數據挨個帶入到函數 fn 中進行處理計算,fn的形參類型需要和容器中數據的類型一致。如果要修改容器中該范圍內的數據,需要把 fn 的形參寫成某某類型的引用。

舉例來說明

#include?

#include?

#include??//?using?for_each

void?modf1(int&);

void?show(const?int&);

int?main(){

//1.?用for_each來?對一個容器進行修改

std::vector?test1;

//???向test1容器中添加4個數

for?(int?i?=?0;?i?

test1.push_back(i?+?1);

std::cout?<

//用for_each?修改?和?展示?test1容器中的內容

std::cout?<

for_each(test1.begin(),?test1.end(),?show);?//展示原始的數據

for_each(test1.begin(),?test1.end(),?modf1);//修改原始的數據

std::cout?<

for_each(test1.begin(),?test1.end(),?show);?//展示修改后的數據

std::cout?<

std::cin.get();

std::cin.get();

return?0;

}

void?modf1(int&?r){

r++;

}

void?show(const?int&?r){

std::cout?<

}

運行結果:

還有再回憶下matlab中的arrayfun函數,可以看一下這篇推文:避免無用的循環——fun系列的另外三個函數

B?=?arrayfun(func,A)

感覺MATLAB中的這個函數也有點像這個for_each。arrayfun是直接把A中的所有元素都給func函數,而不要設一個區間。

對于C++中的 基于范圍的for循環(C++11中才有),為用于STL設計的。它的用法如下:

for?(type?x?:?container)

{

....

}

type是變量x的類型,而且type必須和container容器中的元素類型一致!然后循環體就可以使用指定的變量 x?來依次訪問容器container中的每個元素。還有就是這個container可以是容器,也可以是普通數組。

如果需要修改container中的元素,可以把這個 x 的類型變成type的引用,即type &?。

其實這個挺像Python中的for循環:

container?=?[1,?2,?3,?4]

for?i?in?container:

....body....

下面舉例說明

#include?

#include?

#include??//?using?for_each

void?modf1(int&);

void?show(const?int&);

int?main(){

//用一個普通數組作為容器

int?test[4]?=?{?1,?2,?3,?4,?};

std::cout?<

std::cout?<

for?(int&?x?:?test)

show(x);

//在這個循環中來修改test容器的元素值

for?(int&?x?:?test)

modf1(x);???//這個modf1的形參也必須是引用,不然沒法修改test中的元素

std::cout?<

for?(int&?x?:?test)

show(x);

std::cout?<

//用vector作為容器

std::vector?test1;

for?(int?i?=?0;?i?

test1.push_back(i?+?5);

std::cout?<

std::cout?<

for?(int&?x?:?test1)

show(x);

//在這個循環中來修改test1容器的元素值

for?(int&?x?:?test1)

modf1(x);???//這個modf1的形參也必須是引用,不然沒法修改test中的元素

std::cout?<

for?(int&?x?:?test1)

show(x);

std::cin.get();

std::cin.get();

return?0;

}

void?modf1(int&?r){

r++;

}

void?show(const?int&?r){

std::cout?<

}

結果:

總結

以上是生活随笔為你收集整理的mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。