Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<vector>
- #include<map>
- #include<utility>
- using namespace std;
- template<typename T>
- T Sqr(const T& x) {
- return x * x;
- }
- template<typename Key, typename Value>
- map<Key, Value> operator* (const map<Key, Value>& lhs, const map<Key, Value>& rhs) {
- map<Key, Value> result;
- if (lhs.size() != rhs.size())
- throw exception();
- else
- for (const auto& [k, v] : lhs)
- result[k] = v* v;
- return result;
- }
- template<typename First,typename Second>
- pair<First, Second> operator* (const pair<First, Second>& lhs, const pair<First, Second>& rhs) {
- return make_pair(lhs.first * rhs.first, lhs.second * rhs.second);
- }
- template<typename T>
- vector<T> operator* (const vector<T>& lhs, const vector<T>& rhs) {
- if (lhs.size() != rhs.size())
- throw exception();
- vector<T> result;
- result.reserve(lhs.size());
- for (size_t i = 0; i < lhs.size(); ++i)
- result.push_back(lhs[i] * rhs[i]);
- return result;
- }
- int main() {
- vector<int> v = { 1, 2, 3 };
- cout << "vector:";
- for (int x : Sqr(v)) {
- cout << ' ' << x;
- }
- cout << endl;
- map<int, pair<int, int>> map_of_pairs = {
- {4, {2, 2}},
- {7, {4, 3}}
- };
- cout << "map of pairs:" << endl;
- for (const auto& x : Sqr(map_of_pairs)) {
- cout << x.first << ' ' << x.second.first << ' ' << x.second.second << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement