#include <bits/stdc++.h>
using namespace std;
bool compare(int a, int b) {
return a < b;
}
int main() {
int nums[6] = { 5,2,9,1,7,4 };
sort(begin(nums),end(nums),compare);
for (int num : nums) {
cout << num << " ";
}
cout << "\n";
return 0;
}
이 코드의 경우, 기존에 vector의 sort함수를 활용한 정렬을 하는 코드를 기반으로,
작성한 코드이며, 원래는
int num[6]={5,2,9,1,7,4} 부분이 vector로 표시되어 있던 형태로,
기존 코드를 그대로 복사해서 붙여넣어놓으면,
#include <iostream>
#include <vector>
#include <algorithm>
// Compare function
bool compare(int a, int b) {
// Custom comparison logic
// Return true if a should be ordered before b, otherwise false
return a < b; // Sort in ascending order
}
int main() {
std::vector<int> nums = {5, 2, 9, 1, 7, 4}; // Example vector of numbers
// Sort the vector using std::sort() with the compare function
std::sort(nums.begin(), nums.end(), compare);
// Print the sorted vector
for (int num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
이런 형태를 띄고 있던 코드였다. 그런 부분을 sort함수를 활용할때 vector가 아니라 array를 활용하여서 문제를 해결할때의 차이점을 알고싶어서 그대로 array를 활용하여서 구할 수 있도록 코드를 바꾼 것이고, 이때에 그대로 옮겨보려 하였으나 안되어서 수정한 부분중에서 신경써서 기억해야 할 부분에 대해서 작성해보면,
vector<int> nums의 경우 사이즈가 얼마인지 등에 대한 선언이 필요 없고,
그리고 vector를 사용하는 경우 nums.begin(), nums.end() 등으로 작성하는데 반해서,
array를 사용하여서 문제를 해결한 경우,
int nums[6] = ; 처럼 사이즈를 정해서 선언해주었고,
sort함수를 사용할때,sort(arr,arr+num,compare); 처럼 사용해주어야 한다.
이 두가지 표현 방법이 차이라는걸 알아두고, 나중에 vector를 활용하는 경우, vector.begin(), vetor.end() 형태로,
array를 활용하는 경우 arr,arr+num(size) 형태로 상황별로 맞게 설정하여서 문제를 해결하도록 하자.
*초기에 begin(arr), end(arr)형태로 작성하여도 코드에서 문법적 오류를 잡아내지 않기 때문에 그렇게 사용할 수 있을줄 알았는데, 이때 사용한 begin(), end() 는 vector 내부에 정의한 함수이고, array에 동일한 방법으로 사용하면 코드가 정상작동 하지 않았다. arr, arr+num(size) 형태로 사용하도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
c++ sort함수 내림차순 정렬 방법. (0) | 2023.04.12 |
---|---|
boj 1181번 문제, 단어 정렬 문제/ 이 문제의 경우 굉장히 기본적이면서 익숙해질 필요가 있는 문제라고 생각된다. (0) | 2023.04.10 |
c++ 10989번 문제. 메모리 제한이 아주 작은 문제는 평소와 다른 방식을 원한다는걸 고려해보자. (0) | 2023.04.10 |
boj 하노이탑 두가지 문제중 n=100인 경우를 출력하는 문제를 c++로 하결하는 경우. (0) | 2023.04.10 |
함수를 만들어서 함수를활용하면 분기제어하기가 용이하다. 문제를 풀때 이 상황을 고려하도록 하자. (0) | 2023.04.10 |