c++에서 vector를 sort 함수를 사용하여서 정렬할때와, array를 sort 함수를 사용하여서 정렬할때의 표현 법의 차이.
#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) 형태로 사용하도록 하자. 

 

  Comments,     Trackbacks