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

По какой логике работают плейсхолдеры в данных примерах? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ % не работают http://www.cyberforum.ru/cpp-beginners/thread1585518.html
Подскажите пожалуйста почему компилятору не нравиться % ? #include <iostream> #include <cmath> using namespace std; main() { double a , b , c , d , z; cin >> a >> b >> c >> d; while ( z <= 99999 ) {
C++ Заполнение двоичного файла целыми числами в заданном порядке Разработать программу для заполнения двоичного файла целыми числами в следующем порядке: 10 положительных, 10 отрицательных, 10 положительных, 10 отрицательных. Получить новый файл, компоненты которого идут в таком порядке: 5 положительных, 5 отрицательных и т.д. http://www.cyberforum.ru/cpp-beginners/thread1585510.html
C++ Узнать системную дату и вывести в центре экрана название соответствующего месяца
Составить программу по работе с файловой системой, которая позволяет узнать системную дату и выводит в центре экрана название соответствующего месяца; используя разные цвета для разных сезонов.
Заменить в односвязной очереди Q все вхождения элементов E1 на E2 C++
Составить программу обработки динамической структуры данных: заменить в односвязной очереди Q все вхождения элементов E1 на E2.
C++ Найти такие k, что k–ая строка заданной матрицы совпадает с k–ым столбцом http://www.cyberforum.ru/cpp-beginners/thread1585505.html
Для заданной квадратной матрицы порядка N найти такие k, что k –ая строка матрицы совпадает с k –ым столбцом.
C++ Найти сумму четных элементов каждой строки матрицы Заполнить двумерный числовой массив А целыми числами. Найти сумму четных элементов каждой строки массива и раскрасить при выводе красным цветом все четные элементы массива, не оканчивающиеся нулём. подробнее

Показать сообщение отдельно
tapochka
30 / 30 / 7
Регистрация: 25.04.2014
Сообщений: 412
15.12.2015, 22:48  [ТС]     По какой логике работают плейсхолдеры в данных примерах?
DiffEreD, большое спасибо за ответы... вот только не понимаю почему именно так должно быть. разъясните пожалуйста следущее:
вот есть алгоритм работы fold из книги, согласно которому он рекурсивно аккумулирует предыдущий результат с последующим, полученным уже из урезанной начальной последовательности
fold(Seq, Prev, BinaryOp) :=
if Seq is empty then:
Prev
else: // combine the first element with Prev
fold( // and process the rest recursively
tail(Seq),
BinaryOp(Prev, head(Seq)),
BinaryOp
)
согласно ему, на первом шаге итерации вашего алгоритма, который возвращает fold_t, у нас будет примерно следущее:
C++
1
2
3
4
5
6
7
8
fold<vector_c<1,1,2,5>,  //урезанный входной вектор
                    plus< int_<0>, 
                    if_<  less< int_<1>,  1 >,  //не понимаю почему placeholder_2 подставляет 1 
                         ... ,                                 //и что здесь подставляет placeholder _2 ?
                         ... >,                               // а здесь placeholder _1 ?
                    ...>,                                     //а здесь опять почему-то placeholder _1... что он здесь подставляет?
        binaryOp                                           //то же бинарное выражение 
>
вот, допустим, здесь понятно почему все верно компилится:
C++
1
2
3
4
5
6
typedef vector_c<int, 1, 1, 1, 2, 5> vec_c_t;
typedef vector_c<int, 1, 1, 1, 1, 1> vec_c_t1;
 
typedef transform<vec_c_t, vec_c_t1, plus<_1, _2>>::type trs;
 
BOOST_MPL_ASSERT((equal<vector_c<int, 2, 2, 2, 3, 6>, trs>));
_1 берет из первого вектора, _2 из второго и складываются... но в fold_t не понятно почему там _2 вообще берется...

так же и с sum_t... откуда там при замене на _1 вообще int_<0> берется?
 
Текущее время: 03:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru