c++中的一些迴圈語法

weixin_34148340發表於2018-02-22

for_each

for each (object var in collection_to_loop)在vs中使用可以,其他平臺不確定。

for_each (InputIterator first, InputIterator last, Function fn)在c++std名稱空間中,適用性廣。
first、last為迭代器,fn為"函式",上例子:

void myfunction (int i) {  // function:
  std::cout << ' ' << i;
}

struct myclass {           // function object type:
  void operator() (int i) {std::cout << ' ' << i;}
} myobject;  //過載()運算子,因此能這樣:myobject(100),像函式一樣

int main () {
  std::vector<int> myvector= {1, 2, 3};
  for_each (myvector.begin(), myvector.end(), myfunction);
  for_each (myvector.begin(), myvector.end(), myobject);
  for_each (myvector.begin(), myvector.end(), 
  [](int i)  {std::cout<<' '<<i;}  //匿名函式
  );
  return 0;
}

上面3個一樣效果

for

上正體,對於stl容器,如vector<int> v,效率:
for(int i=0;i<v.size();i++) 這個最慢,好點的話新建個變數記住v.size()
for(vector<int>::iterator i=v.begin(); i!=v.end(); i++)迭代器迴圈,速度快
for(int i : v)跟上面實際差不多

相關文章