so I'm struggling with these things:
I have method that returns istream input and takes istream input as a parameter, sends values to vector and stores them in it. Now, when I've entered 1 value, I'm trying to make a check if vector already contains that value, here is my code to understand it better:
struct Predmet {
string naziv;
string odsjek;
istream& dodaj_predmet(istream &);
};
struct Student {
string brojIndeksa;
string ime;
string prezime;
map<std::string, int> ocjene;
istream& dodaj_studenta(istream &);
};
vector<Student> studenti;
vector<Predmet> predmeti;
Student s;
Predmet p;
istream& Student::dodaj_studenta(istream & input){
cout << "### Unesite podatke o studentu: " << endl;
cout << endl;
cout << "Unesite broj indeksa studenta: " << endl;
getline(input, brojIndeksa);
cout << endl;
cout << "Unesite ime studenta: " << endl;
getline(input, ime);
cout << endl;
cout << "Unesite prezime studenta: " << endl;
getline(input, prezime);
cout << endl;
cout << "*** Uspjesno ste unijeli studenta ***" << endl;
return input;
}
So I'm trying to make a check if value entered for structure member brojIndeksa
already exists in vector, and I'm not sure how to do it.
Also how can I add values to map, because I need to add pair<string, int>, and not sure how, because I need to check if STRING
is a value entered in naziv
inside predmeti
vector?
Thanks.
first of all, you can check count of std::vector to see if given key exists
//std::count(v.begin(), v.end(), key)
if (std::count(v.begin(), v.end(), key)){
//it is inside
}
else{
//it isn't inside
}
This is one way to go, but you should do the map
std::map<std::string,int> myMap;
//adding will look like this
std::pair<std::string,int> element;
myMap.insert(element);
//or
myMap.insert(std::pair<std::string,int>(myString,myInt));
Will solve your problem. You add pair of string and int. In order to check if given key exists you can do
std::map<std::string, int> m;
if ( m.find(key) == m.end() ) {
// not found
} else {
// found
}
Added Kyle comment to, as it is valid way, and it looks a bit cleaner, you can also find if element exists like this
if (m.count(key)){
//key found
}
else{
//key not found
}
PS. It's bad practice to use c++ using namespace std;
. You should always use std::whatever_you_need
instead