Sunteți pe pagina 1din 3

1.

Care sunt beneficiile folosirii tipului de data std::set

2. Cum pot fi parcurse elementele dintr-un set? In timpul parcurgerii putem modifica elementul
curent?

3. De ce ar trebui sa folosim std::set::find , pentru a gasi un element, in locul metodei standard std::find?

4. Prin ce metoda ( tehnica) std::set verifica atunci cand inseram un element nou, daca acesta deja exista
sau nu?

5. Ce returmeaza prograul de mai jos?

#include<iostream>
#include<set>
#include<string>

class Message
{
public:
std::string m_continut;
std::string m_trimisDe;
std::string m_primitDe;

Message(std::string trimisDe, std::string primitDe, std::string msg) :


m_ continut(msg), m_ trimisDe (sentBy), m_ primitDe (primitDe)
{
}

bool operator< (const Message & msgObj) const


{
std::string rightStr = msgObj.m_ continut + msgObj.m_ trimisDe + msgObj.m_ primitDe;
std::string leftStr = this->m_ continut + this->m_ trimisDe + this->m_ primitDe;
return (leftStr < rightStr);
}

friend std::ostream& operator<<(std::ostream& os, const Message& obj);

};

std::ostream& operator<<(std::ostream& os, const Message& obj)


{
os<<obj.m_ trimisDe <<" :: "<<obj.m_ continut <<" :: "<<obj.m_ primitDe <<std::endl;
return os;
}

int main()
{
std::set<Message> setOfMsgs;

- Vertraulich / Confidential -
Message msg1("user1", "Hello", "user2");
Message msg2("user1", "Hello", "user3");
Message msg3("user3", "Hello", "user1");
Message msg4("user1", "Hello", "user3");

setOfMsgs.insert(msg1);
setOfMsgs.insert(msg2);
setOfMsgs.insert(msg3);
setOfMsgs.insert(msg4);

for (std::set<Message>::iterator it=setOfMsgs.begin(); it!=setOfMsgs.end(); ++it)


std::cout << *it ;

return 0;
}

6. Pentru programul de mai sus, doresc ca un utilizator sa poate trimite doar un singur mesaj dar
operatoru < nu poate fi modificat. Care ar fi solutia ta? ( foloseste un comparator aparut incepand
cu C++ 17)

7. Da-mi exemple de accesare a unui element folosind:

- std::advance
- std::next

8. Scrie o secventa de cod care insereaza un element intr-un set si verifica rezultatul, daca insertia s-a
putut realiza sau nu.

9. Scrie o secventa de cod care insereaza un IteratorRange intr-un set.

10. Scrie o secventa de cod care insereaza o lista initializata intr-un set.

11. Care sunt beneficiile folosirii tipului de multime std::map?

12. Care sunt diferentele dintre utilizarea operatorului [] sau a functiei insert() atunci cand dorim sa
inseram un element intr-un map?

mapOfPlanet["earth"] = 4;
vs
mapOfPlanet.insert(std::make_pair("earth", 1)).second

(tips: diferentele apar atunci cand un element cu o anumita chee exista deja in lista)

13. Set vs Map. Cum sa aleg containerul asociativ cel mai corect? ( da-mi exemple de cazuri cand este de
preferat sa aleg Set si exemple cand este de preferat sa alg Map)

14. Cum parcurg elementele unui map in ordine inversa? (Scrie un mic exemplu)

15. Ce este un unordered_map, si cum este structurat intern? Cum sunt elementele stocate?

- Vertraulich / Confidential -
16. Care este avantajul folosirii unui container unordered_map?

17. Scrie un mic exemplu de cautare a unui anumit element intr-un unordered_map, dupa cheie.

18. Scrie un mic exemplu de stergere a unui element dat dupa valoarea lui, dintr-un unordered_map.

19. map vs unordered_map. Ce sa aleg? ( in ce caz ma avantajeaza foloseirea unui map si in ce caj
folosirea unui unordered_map? )

20. Descrie particularitatile containerului std::unordered_set .

- Vertraulich / Confidential -