티스토리 뷰
안녕하세요? 오늘은 벡터를 오름차순과 내림차순으로 정렬하는 방법에 대해 살펴보겠습니다.
람다를 사용하여 정렬하였습니다.
#include <iostream> #include <functional> #include <ctime> #include <vector> #include <algorithm> #define V_SIZE 1 std::vector<int> genRandomNum(int maximum, int size); void printVector(std::vector<int> vector); int main() { srand((unsigned int)time(NULL)); auto genVector = std::bind(genRandomNum, 100, 10); std::vector<std::vector<int>> vInt(V_SIZE); for (int i = 0; i < V_SIZE; i++) { vInt[i] = genVector(); } for (std::vector<int> v : vInt) { std::cout << "정렬 전: "; printVector(v); // Sort in a ascending order sort(v.begin(), v.end(), [](int first, int second) -> bool { return first < second; }); std::cout << "정렬 후(오름차순): "; printVector(v); // Sort in a descending order sort(v.begin(), v.end(), [](int first, int second) -> bool { return first > second; }); std::cout << "정렬 후(내림차순): "; printVector(v); std::cout << std::endl; } return 0; } std::vector<int> genRandomNum(int maximum, int size) { std::vector<int> temp; for (int i = 0; i < size; i++) { temp.push_back(rand() % maximum + 1); } return temp; } void printVector(std::vector<int> vector) { for (auto v : vector) { std::cout << v << ' '; } std::cout << std::endl; }
[결과 화면]
10개의 1~100사이 임의의 정수를 가진 벡터를 1개 선언하여 출력시키고 오름차순과 내림차순 정렬을 시켜보았습니다.
genRandomNum() 함수와 100(최대값)과 10(개수)을 binding하고 이를 genVector가 reference하도록 하였습니다. genVector()를 호출하면 1~100사이의 임의의 정수를 가진 벡터 1개 를 반환하고 이를 활용하여 여러 개의 벡터를 초기화 시킬 수 있도록 하였습니다. (예제에서는 1개만 초기화 하였습니다.)
람다를 사용하지 않고 sort()함수를 사용하여 정렬하는 방법으로는 람다식이 있는 자리에 일반 함수를 작성하여 함수명을 넣어주셔도 됩니다.
감사합니다.
'프로그래밍 언어 > C++' 카테고리의 다른 글
함수형 프로그래밍) 람다(Lambda) 사용하기 (0) | 2018.05.26 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크