Gistrec icon

Возводим все в квадрат

Gistrec | PRO | 12/13/18 09:57:42 AM UTC | 0 ⭐ | 541 👁️ | Never ⏰ | []
C++ |

1.34 KB

|

None

|

0 👍

/

0 👎

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <utility> // std::pair, std::get
 
/**
 * Возводим все в квадрат
 * vector, map, pair
 */
 
template <class Type>
Type Sqr(Type var) {
    return var * var;
}
 
template <class Type>
std::vector<Type> Sqr(std::vector<Type> vec) {
    for (auto &elem : vec) {
        elem = Sqr(elem);
    }
    return vec;
}
 
template <class First, class Second>
std::pair<First, Second> Sqr(std::pair<First, Second> pair) {
    std::get<0>(pair) = Sqr(std::get<0>(pair));
    std::get<1>(pair) = Sqr(std::get<1>(pair));
    return pair;
}
 
template <class First, class Second>
std::map<First, Second> Sqr(std::map<First, Second> map) {
    for (auto &elem : map) {
        elem.second = Sqr(elem.second);
    }
    return map;
}
 
int main() {
    std::vector<int> v = {1, 2, 3};
    std::cout << "vector:";
    for (int x : Sqr(v)) {
        std::cout << ' ' << x;
    }
    std::cout << std::endl;
 
    std::map<int, std::pair<int, int>> map_of_pairs = {
            {4, {2, 2}},
            {7, {4, 3}}
    };
    std::cout << "map of pairs:" << std::endl;
    for (const auto& x : Sqr(map_of_pairs)) {
        std::cout << x.first << ' ' << x.second.first << ' ' << x.second.second << std::endl;
    }
 
    return 0;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎