Struktura para
Napraviti strukturu pair koja predstavlja par vrednosti tipova T i U. Implementirati sledeće funkcije:
template <typename T, typename U>
pair<T, U> make_pair(const T &first, const U &second);
template <typename T, typename U>
pair<U, T> swap_pair(pair<T, U> &p);Dodatno: Napraviti klasu pair umesto strukture, i implementirati konstruktor koji prima dva argumenta tipova T i U za inicijalizaciju članova first i second.
Test
#include <iostream>
#include <string>
namespace matf {
// Ovde ide vasa implementacija
template <typename T, typename U>
pair<T, U> make_pair(const T &first, const U &second)
{
// Ovde ide vasa implementacija
}
template <typename T, typename U>
pair<U, T> swap_pair(const pair<T, U> &p)
{
// Ovde ide vasa implementacija
}
} // namespace matf
int main(void)
{
matf::pair<int, double> p = matf::make_pair(1, 3.14);
std::cout << "First: " << p.first << ", Second: " << p.second << std::endl;
// Output: First: 1, Second: 3.14
matf::pair<std::string, int> sp = matf::make_pair(std::string("age"), 30); // have to pass std::string explicitly
std::cout << "First: " << sp.first << ", Second: " << sp.second << std::endl;
// Output: First: age, Second: 30
matf::pair<char, std::string> cp = matf::make_pair<char, std::string>('A', "Apple"); // or have to pass both types explicitly
std::cout << "First: " << cp.first << ", Second: " << cp.second << std::endl;
// Output: First: A, Second: Apple
matf::pair<std::string, char> swapped_cp = matf::swap_pair(cp);
std::cout << "First: " << swapped_cp.first << ", Second: " << swapped_cp.second << std::endl;
// Output: First: Apple, Second: A
return 0;
}Rešenje
main.cpp
#include <iostream>
#include <string>
namespace matf {
template <typename T, typename U>
struct pair {
T first;
U second;
};
template <typename T, typename U>
pair<T, U> make_pair(const T &first, const U &second)
{
pair<T, U> p;
p.first = first;
p.second = second;
return p;
}
template <typename T, typename U>
pair<U, T> swap_pair(const pair<T, U> &p)
{
pair<U, T> swapped_pair;
swapped_pair.first = p.second;
swapped_pair.second = p.first;
return swapped_pair;
}
} // namespace matf
int main(void)
{
matf::pair<int, double> p = matf::make_pair(1, 3.14);
std::cout << "First: " << p.first << ", Second: " << p.second << std::endl;
// Output: First: 1, Second: 3.14
matf::pair<std::string, int> sp = matf::make_pair(std::string("age"), 30); // have to pass std::string explicitly
std::cout << "First: " << sp.first << ", Second: " << sp.second << std::endl;
// Output: First: age, Second: 30
matf::pair<char, std::string> cp = matf::make_pair<char, std::string>('A', "Apple"); // or have to pass both types explicitly
std::cout << "First: " << cp.first << ", Second: " << cp.second << std::endl;
// Output: First: A, Second: Apple
matf::pair<std::string, char> swapped_cp = matf::swap_pair(cp);
std::cout << "First: " << swapped_cp.first << ", Second: " << swapped_cp.second << std::endl;
// Output: First: Apple, Second: A
return 0;
}