c++中的一些循环语法
2018-02-22 本文已影响0人
codeflame
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)跟上面实际差不多