해결된 질문
작성
·
44
답변 2
0
안녕하세요 지성님 ㅎㅎ
문제에서 주어진 최대 크기+여유분 만큼의 array를 선언해서 사용하시는 것으로 보이는데, array를 사용하는게 더 이점이 큰건지 아니면 그냥 취향 차이인건지 궁금합니다!
-> 성능상 array가 더 좋습니다. 한번 비교해볼까요?
#include <iostream>
#include <vector>
#include <chrono>
using namespace std;
const size_t N = 10000000;
int main() {
volatile long long sum_vector = 0;
volatile long long sum_array = 0;
vector<int> vec;
vec.resize(N, 1);
auto start_vector = chrono::high_resolution_clock::now();
for (size_t i = 0; i < vec.size(); ++i) {
sum_vector += vec[i];
}
auto end_vector = chrono::high_resolution_clock::now();
auto duration_vector = chrono::duration_cast<chrono::milliseconds>(end_vector - start_vector).count();
int* arr = new int[N];
for (size_t i = 0; i < N; ++i) {
arr[i] = 1;
}
auto start_array = chrono::high_resolution_clock::now();
for (size_t i = 0; i < N; ++i) {
sum_array += arr[i];
}
auto end_array = chrono::high_resolution_clock::now();
auto duration_array = chrono::duration_cast<chrono::milliseconds>(end_array - start_array).count();
cout << "Vector를 사용한 합계: " << sum_vector << " / 걸린 시간: " << duration_vector << " ms" << endl;
cout << "배열을 사용한 합계: " << sum_array << " / 걸린 시간: " << duration_array << " ms" << endl;
delete[] arr;
return 0;
}
물론 컴파일러마다 다를 수 있지만 결과는 다음과 같습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. 지성님.
C++ 프로그래밍에서 vector와 array는 각각의 장단점이 있어 사용 목적과 상황에 따라 선택할 수 있습니다. 큰돌님이 array를 주로 사용하시는 이유는 다음과 같은 몇 가지 장점 때문일 수 있습니다:
성능: array는 고정된 크기의 메모리를 할당하여 런타임 성능이 일정하고 안정적인 것이 특징입니다. 반면 vector는 동적으로 메모리를 할당 및 관리하므로 크기가 조정될 때 약간의 오버헤드가 발생할 수 있습니다.
메모리 사용: array는 고정된 메모리 크기로 사용하므로 메모리가 초과할 걱정이 적습니다. 특히, 코딩 테스트와 같이 알고리즘의 성능이 중요한 경우 미리 할당된 고정 크기의 메모리를 사용하는 것이 유리할 수 있습니다.
간단함: 간단하고 예측 가능한 구조를 원할 때 array가 더 효과적일 수 있습니다. 특별한 메모리 관리가 필요 없고, 구조가 단순해서 이해하기가 쉽습니다.
한편, vector는 아래와 같은 이점이 있습니다:
유연성: vector는 크기 조정이 용이하여 데이터의 삽입, 삭제가 빈번한 경우에 적절합니다.
STL 지원: vector는 STL의 많은 알고리즘과 호환되며, 다양한 기능적 인터페이스를 지원합니다.
결국, 어떤 자료구조를 사용할지는 문제의 특성과 개인의 프로그래밍 스타일에 따라 달라집니다. array와 vector의 사용 선택은 취향 차이일 수도 있지만, 성능이나 코드의 복잡성에 영향을 미칠 수 있기 때문에 각 상황에 맞는 적절한 선택이 필요합니다.
관련하여 더 깊이 있는 논의나 예시가 궁금하시다면 아래의 질문과 답변을 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그렇다면 vector을 사용해야 하는 문제도 따로 있는걸까요? 아니면 그냥 array만 사용하면 되는거라고 이해하면 되는걸까요?