C++primer 학습: 연관 컨테이너(2)

5201 단어

pair 대상의 생성 방식

using P = pair<string, int>;
int main()
{
    vector<P> data;
    string word;
    int interger;
    while (cin >> word >> interger)
        data.emplace_back(word, interger);// 
    /* data.push_back(pair<string, int>(word, interger));*/
        //data.push_back(make_pair(word, interger));
        //data.push_back({ word, interger });

    for (const auto it : data)
        cout << it.first << " " << it.second << endl;

가정과 아이의 맵을 바꾸고pair의vector를 추가해서 아이의 이름과 생일을 저장합니다.

using P = pair<string, string>;
using Children = vector<P>;
int main()
{

    map<string, Children> family;
    string f_name, c_name,birthday;
    while (cout<<"last_name: "&&cin>>f_name)
    {
        while (cout<<"child_name: birthday data: "&&cin>>c_name>>birthday)
            family[f_name].emplace_back(c_name, birthday);
        cin.clear();
    }

    for (const auto it : family)
    {
        cout << endl << it.first << ":
"
; for (const auto child : it.second) { cout << child.first << " birthday: " << child.second << endl; } }

insert 작업: 관련 용기에 원소 추가

    map<string, int>  word_count;
    string word;
    while (cin>>word)
    {
        auto ret = word_count.insert({word,1});// pair ,first ,second bool 
        if (ret.second)
            ++(ret.first->second);
    }

멀티맵에 요소를 추가하려면 아래 첨자로 연산할 수 없습니다.

multimap<string,vector<string >>  word_count;
    string word,name;
    while (cin >> word)
    {   
        vector<string> ch;
        while (cin >> name)
            ch.push_back(name);
        word_count.insert({ word, ch });
        cin.clear();
    }
    for (auto &it : word_count)
    {   
        cout << it.first << " : ";
        for (auto &child : it.second)
        cout <<" " <<child;
    }

좋은 웹페이지 즐겨찾기