在C++11中for扩展了一个新的用法,类似于c#中的foreach.可以用来遍历容器,输出和关联容器等。配合另外的c++11新关键字auto能够很方便的实现遍历。用法如下:
#include <iostream>
int main()
{
std::string myStr = "hello!";
for(auto ch : myStr)
std::cout<<ch<<std::endl;
}
上面函数的作用是遍历 string 然后输出其每一个元素。
2 lambda表达式
关于lambda表达式在 C++ Lambda表达式用法 和 C++11 lambda表达式解析 这两篇文章中已经有了比较详细的介绍了。其完整表达式为:
[ capture ] ( params ) mutable exception attribute -> ret { body }
这里对 capture 进行补充说明一下,上面的第二篇文章将这个翻译为捕获,第一遍看到的时候比较困惑。后来才发现这个其实就是指定了lambda表达式作为函数对象其构造函数传递进来的参数是什么,只有传递进来的参数lambda表达式才可以使用, 即lambda表达式会生成一个重载了()操作的函数对象,该对象的构造函数参数由[]内参数指定 。其他的没有什么好补充的。可以在支持c++11标准的编译器上运行下面代码感受一下:
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
class LessFunction
{
public:
LessFunction(int threshold) :Threshold(threshold) {}
bool operator () (int n)
{
return n < Threshold;
}
private:
int Threshold;
};
int main()
{
std::vector<int> a { 1,2,3,4,5,6,7 };
LessFunction myFun(5);
a.erase(std::remove_if(a.begin(), a.end(), myFun), a.end());
std::cout << "a:" ;
for (auto i : a)
std::cout << i << " ";
std::cout << std::endl;
std::vector<int> b{ 1,2,3,4,5,6,7 };
int x = 5;
b.erase(std::remove_if(b.begin(), b.end(), [x](int n) {return n < x; }), b.end());
std::cout << "b:" ;
for (auto i : b)
std::cout << i << " ";
std::cout << std::endl;
-
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
阅读:17243|2023-10-27
-
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
阅读:9322|2022-11-06
-
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
阅读:7945|2022-11-06
-
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
阅读:8310|2022-11-06
-
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
阅读:8214|2022-11-06
-
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
阅读:9056|2022-11-06
-
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
阅读:8189|2022-11-06
-
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
阅读:7606|2022-11-06
-
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
阅读:8144|2022-11-06
-
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
阅读:7187|2022-11-06
|
请发表评论