Language/C++

C++ 11 :: Array

VallistA2015. 2. 13. 16:50

기존, C언어의 배열을 쓰기보다 STL의 Vector을 C++ 프로그래머들은 더 많이 썻었다. 

왜냐하면 Vector가 안전했으며 도중에 지워야할 필요성도 있었기 때문이다.

그렇게 흘러오던 도중, 굳이 Vector를 사용하지 않아도 될 상황에 사용을 하게 되어 오버헤드를 늘려버리는(?) 문제도 발생하게 되었다.


그래서 최신 C++ 용법에서는 이와같은 문제를 해결하려 새로운 컨테이너인 Array를 도입하게 되었다.

Array는 Vector와 달리 크기를 정해놓아서 오버헤드가 단축이되며, 배열의 크기를 명확이 알 수 있으며, 포인터가 자동 캐스팅 되는 것을 방지가 가능해진다.


그외에도 배열의 크기를 명확히 알 수 있으며, 포인터가 자동 캐스팅 되는 것을 방지할 수 있다.

기존의 배열을 사용안하고 컨테이너 적인 내용으로 접근을 하기 때문에 STL함수들을 확용하여 항목을 순회하거나 STL의 알고리즘을 이용가능해서, C언어의 배열보다 많은 장점을 가지고 있다.


그럼 다음으로 소스코드를 보도록 하자.




번외로. 일반 C언어 배열, Vector의 장 단점을 말해보자면,


1.

배열은 타입이 아무거나 들어갈 수 있어서 처음에 타입을 찾는데 오버헤드가 발생.

하지만 Vector는 처음에 타입이 고정되어 있어서 배열이 빠르다.


2.

배열은 많은양의 데이터를 관리하는데 좋다. 왜냐하면 배열 자체가 가볍기 때문이다.

하지만 Vector는 많은양의 데이터를 관리할 경우 오버헤드가 발생, 왜냐 Vector 객체 하나마다 굉장히 무겁기 때문.


3.

배열은 중간 객체의 값을 이리저리 움직이거나 할 때 주소만 넘겨주면 되지만, Vector의 경우에는 메모리들을 전부 쉬프트 해주고 공간을 마련한 다음 데이터를 저장하기에 느리다.


4.

배열은 참조값이기 때문에 데이터 접근이 느림

하지만 Vector는 자료형이 지정되어 있어서 배열보다 빠르고 바로 해당값을 찾기가 가능


하지만. Array 위와 같은 단점을 공유를 하지 않는다. 그러므로 일반론적인 배열을 사용할 것이면 Array를 사용하는게 옳다.

댓글

댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 19

Total : 414,365

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘