Форум программистов, компьютерный форум CyberForum.ru

Какова польза лямбда выражений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввести несколько кирпичей, определить обьем и определить самый большой http://www.cyberforum.ru/cpp-beginners/thread1121634.html
1)Определить N первых членов рекуррентной последовательностиhttp://rghost.ru/53121622.view 2)Ввести N троек чисел a1,b1,c1; a2,b2, c2 an,bn,cn.... обозначающих длины рёбер кирпичей. Определить кирпич с максимальным объемом 3) Ввести натуральное число N определить сумму четных и количество нечетных 4)Используя три различных цикла определить значение. http://rghost.ru/53121792.view
C++ Перевод числа из двоичной системы в десятичную Помогите написать программу для перевода из 2 в 10. Если число делится на 3, то вывести и результат деления http://www.cyberforum.ru/cpp-beginners/thread1121631.html
C++ Помогите написать две небольшие программы по блок схемам
Помогите написать две небольшие программы по блок схемам для уравнения X^3+3X^2+6X-1=0 1.Метод простой итерации 2.Метод Хорд
В матрице, записанной в файл, четные элементы разделить на 4, а к нечетным прибавить 10 C++
Вот условие задачи: В матрице A(6,6) четные элементы разделить на 4, а к нечетным прибавить 10. Вывести полученную матрицу. код: #include <iostream> #include <cstdio> #include <cmath> using namespace std; int main() {
C++ Перегрузка преобразования класса-строка в тип string (и наоборот) http://www.cyberforum.ru/cpp-beginners/thread1121594.html
Помогите, а то не могу разобраться:(( перегрузка преобразования класса-строка в тип string (и наоборот). #include "stdafx.h" #include "iostream" #include <string> #include <algorithm> #include "vector" using namespace std;
C++ Перегрузка констант true и false помогите, а то не могу разобраться =(( перегрузка констант true и false: обращение к экземпляру класса дает значение true, если строка не пустая, иначе false. #include "stdafx.h" #include "iostream" #include <string> #include <algorithm> #include "vector" using namespace std; подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
12892 / 7278 / 811
Регистрация: 27.09.2012
Сообщений: 17,977
Записей в блоге: 2
Завершенные тесты: 1
17.03.2014, 14:55     Какова польза лямбда выражений
Чуть поменял, чтобы не было автоматических переменных в некоторых местах, которые будут не копироваться, а перемещаться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
#include <vector>
#include <algorithm>
#include <stdint.h>
#include <time.h>
#include <sys/time.h>
#include <string>
 
 
 
using namespace std;
 
 
timeval getCurrentTime() {
    timeval current_time;
    gettimeofday(&current_time, NULL);
    return  current_time;
}
 
 
uint64_t getElapsedMicrosecond(const timeval &stopwatch_time) {
    timeval current_time = getCurrentTime();
    return (current_time.tv_sec - stopwatch_time.tv_sec) * 1000000 + current_time.tv_usec - stopwatch_time.tv_usec;
}
 
 
vector<char> testCopy( vector<char> & result ) {
 
    char            ch = 0;
 
    for (size_t i = 0; i < 100000; i++) {
        ch++;
        result.push_back(ch);
    }
 
    return result;
}
 
 
vector<char> testMove(vector<char>  &result) {
    char            ch = 0;
 
    for (size_t i = 0; i < 10000; i++) {
        ch++;
        result.push_back(ch);
    }
 
    return move(result);
}
 
 
void testMoveVsCopy() {
    timeval         stopwatch_time;
    const size_t    count = 1000;
    vector<char>    v;
 
    {vector<char>    v2;
        cout << "copy: " << endl;
        stopwatch_time = getCurrentTime();
        for (size_t i = 0; i < count; i++)
            v.push_back(testCopy(v2)[0]);
        cout << getElapsedMicrosecond(stopwatch_time) << endl;
    }
 
    {vector<char>    v2;
        cout << "copy lambda: " << endl;
        stopwatch_time = getCurrentTime();
        size_t i = 0;
        generate_n(back_inserter(v), count,
            [&i,&v2]() -> char {
                i++;
                return testCopy(v2)[0];
            }
        );
        cout << getElapsedMicrosecond(stopwatch_time) << endl;
    }
 
    {vector<char>    v2;
        cout << "move: " << endl;
        stopwatch_time = getCurrentTime();
        for (size_t i = 0; i < count; i++)
            v.push_back(testMove(v2)[0]);
        cout << getElapsedMicrosecond(stopwatch_time) << endl;
    }
 
    {vector<char>    v2;
        cout << "move lambda: " << endl;
        stopwatch_time = getCurrentTime();
        size_t i = 0;
        generate_n(back_inserter(v), count,
            [&i,&v2]() -> char {
                i++;
                return testMove(v2)[0];
            }
        );
        cout << getElapsedMicrosecond(stopwatch_time) << endl;
    }
}
 
 
//void executeLambda([](const int &i) -> double) {
//
//}
 
 
void testLambda() {
    int a = 1, b = 2;
    cout << "b = " << b << endl;
    [=, &b]{
        b = b + a;
    }();
    cout << "b = " << b << endl;
 
}
 
 
int main() {
    testMoveVsCopy();
 
    testLambda();
 
    return 0;
}
Результаты:
Какова польза лямбда выражений
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru