13주차 퀴즈

문제1

다음 프로그램을 예로 STL(Standard Template Library)의
container, iterator, algorithm, functor(function object)에 대해서 설명하세요(2점).

#include <iostream>     // std::cout
#include <vector>       // std::vector
#include <algorithm>    // std::transform
#include <functional>   // std::plus
using namespace std;

int main(){
    vector<int> a{ 1, 2, 3, 4, 5 }, b{ 6, 7, 8, 9, 10 }, c(5);
    transform(a.begin(), a.end(), b.begin(), c.begin(), plus<int>());
    for(vector<int>::iterator it = c.begin(); it != c.end(); ++it)
        cout << *it << endl;
    return 0;
}

문제2

다음 프로그램에서,
입력된 key 값에 매핑되는 숫자를 반환하는 함수 search()를 완성하세요(2점).

#include <iostream>
#include <vector>
using namespace std;

struct Pair {
    string key;
    int value;
};

int search(const vector<Pair>& v, const string& k){
    // insert your code here
}

int main(){
    vector<Pair> v;
    v.push_back(Pair{"a", 10});
    v.push_back(Pair{"b", 20});
    v.push_back(Pair{"c", 30});
    v.push_back(Pair{"d", 40});
    v.push_back(Pair{"e", 50});

    string k;
    cin >> k;

    cout << search(v, k) << endl;
}

문제3

다음 프로그램의 출력에 대해서 설명하세요(2점).

#include <iostream>     // std::cout
#include <algorithm>    // std::copy
#include <vector>       // std::vector
using namespace std;

int main(){
    vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    copy(v.begin() + 3, v.end(), v.begin());
    for(int i:v) cout << i;

    return 0;
}

문제4

리스트에 421보다 큰 수가 몇 개나 존재하는 지를 출력하는
다음 프로그램을 완성하세요(2점).

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(){
    vector<int> v(1000);
    generate(v.begin(), v.end(), []()->int { return rand() % 1000; });

    cout << "how many numbers more than 421 are in the list? ";
    cout << /* insert code here only */ << endl;

    return 0;
}

댓글남기기