- 论坛徽章:
- 0
|
lambdas
- #include <algorithm>
- #include <iostream>
- #include <ostream>
- #include <vector>
- using namespace std;
- int main() {
- vector<int> v;
- for (int i = 0; i < 10; ++i) {
- v.push_back(i);
- }
- for_each(v.begin(), v.end(), [](int n) { cout << n << " "; });
- cout << endl;
- }
复制代码
很明显 和函数对象很像
- #include <algorithm>
- #include <iostream>
- #include <ostream>
- #include <vector>
- using namespace std;
- struct Print{
- void operator()(int n) const {
- cout << n << " ";
- }
- };
- int main() {
- vector<int> v;
- for (int i = 0; i < 10; ++i) {
- v.push_back(i);
- }
- for_each(v.begin(), v.end(), Print());
- cout << endl;
- }
复制代码
lambdas中可以使用表达式,if语句 可以像其它函数一样返回各种类型 当然 它的返回类型是我们刚才所说的auto的
当然 自己也可以指定返回类型
- #include <algorithm>
- #include <deque>
- #include <iostream>
- #include <iterator>
- #include <ostream>
- #include <vector>
- using namespace std;
- int main() {
- vector<int> v;
- for (int i = 0; i < 10; ++i) {
- v.push_back(i);
- }
- deque<double> d;
- transform(v.begin(), v.end(), front_inserter(d), [](int n) -> double {
- return n*1.0;
- });
- }
复制代码
g++ 的0x支持和VC的差不多
见如下链接:
http://gcc.gnu.org/projects/cxx0x.html |
|