#include <iostream>
#include<vector>
#include<initializer_list>
#include <algorithm>
#include <string>
#include <stdexcept>
template <typename T>
class Mapa{
std::vector<std::pair<std::string, T>> parovi;
public:
Mapa() {}
Mapa (std::initializer_list<std::pair<std::string, T>> lista);
int DajVelicinu() const {return parovi.size();};
void DodajPar(const std::pair<std::string, T> &par);
void IzbrisiElement(const std::string &kljuc);
const T &NadjiElement(const std::string &kljuc) const;
void IspisiMapu() const;
};
template <typename T>
Mapa<T>::Mapa(std::initializer_list<std::pair<std::string, T>> lista){
for(auto p : lista) DodajPar(p);
}
template <typename T>
void Mapa<T>::DodajPar(const std::pair<std::string, T> &par){
auto it = std::find_if(parovi.begin(), parovi.end(),
[par](const std::pair<std::string, T> &a){return a.first==par.first;});
if(it != parovi.end()) it->second = par.second;
else {
parovi.push_back(par);
std::sort(parovi.begin(), parovi.end());
}
}
template <typename T>
void Mapa<T>::IzbrisiElement(const std::string &kljuc){
auto it = find_if(parovi.begin(), parovi.end(),
[kljuc](const std::pair<std::string, T> &par){
return par.first == kljuc;
}
);
if(it != parovi.end()) parovi.erase(it);
}
template <typename T>
const T &Mapa<T>::NadjiElement (const std::string &kljuc) const{
auto it = find_if(parovi.begin(), parovi.end(), [kljuc] (const std::pair<std::string, T> &par){
return kljuc == par.first;
});
if(it == parovi.end()) throw std::logic_error("Nije nadjen par");
return it->second;
}
template <typename T>
void Mapa<T>::IspisiMapu() const{
for (auto p : parovi) std::cout << p.first << "/" << p.second <<std::endl;
}
int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: