반응형

SW/C++ 87

[ C++ ] array 개념 및 예제

array는 C에서 [] 기호를 사용해 배열을 선업합니다. C에서 사용한 배열과 동일한 배열을 선언하지만 컨테이너와 같이 반복자와 같은 컨테이너에서 사용할 수 있는 메소드를 제공합니다. empty 컨테이너가 비어있는지 확인합니다. size 원소의 개수를 확인합니다. fill 모든 원소를 동일한 값으로 채워 넣습니다. std::array arrayValue {1,2,3,4,5,6,7,8,9,10} Colored by Color Scriptercs array를 이용하여 int형이고 원소가 10개 있는 배열을 선언합니다. array 키워드 바로 뒤에 데이터형이고, 그 뒤 개수를 나타내는 것입니다. arrayValue.empty() cs arrayValue가 비었는지 묻는 것입니다. 비어있따는 것은 원소가 없다..

SW/C++ 2018.11.16

[ C++ ] tuple 개념 및 예제

tuple 튜플의 뜻을 아시나요? 튜플은 사물의 유한한 순서를 뜻합니다. 튜플은 lisp, python, linda 등의 언어에서 두 개 이상의 순선대로 정렬된 서로 다른 값들의 모임을 정리할 때 이용합니다. 다른 객체 지향 언에서 사용되는 튜플을 C++11에서 채택하여 제공하는 것입니다. std::typle tupleValue(10,x,"string");cs 튜플의 선언 방식은 위와 같습니다. tuple 키워드를 이용하여 꺽쇠 안에 묶기 원하는 데이터 형을 나열합니다. 튜플은 함수에서 반환값이 두 개 이상일 경우에 사용하면 효과적입니다. 두 개 이상의 반환값을 전달하기 위해 포인터나 참조를 이용하거나 구조체를 만들어 전달하는 불편함이 있었습니다. 튜플을 이용한다면 반환값을 몇개이던지 전달할 수 ..

SW/C++ 2018.11.16

[ C++ ] 스마트 포인터 개념 및 예제

스마트포인터 개발자 분들에게 가장 큰 근심은 포인터의 메모리 할당과 해제라고 할 수 있습니다. 아무리 메모리에 신경을 쓴다고 해도 하나라도 놓치게 된다면 메모리 누수가 발생하기 때문입니다. 다른 객체지향 언어인 자바는 다행히도 포인터를 사용하지만 자동으로 해제할 수 있도록 설계가 되어 있습니다. 아무래도 C++보다는 그래서 쉬운 편인 것 같습니다. 따라서 C++에서도 자동으로 메모리를 해제해주도록 하는 기능이 c++11에 추가되었습니다. 스마트 포인터의 이름이 왜 스마트인지 이제 느낌이 오시나요? shared_ptr shared_ptr mySmartPtr (new Type);cs 선언 방식은 위와 같습니다. shared_ptr을 사용하기 위해서는 참조 카운트의 개념을 알아야 합니다. 참조 카운트는 해당 ..

SW/C++ 2018.11.16

[ C++ ] range base for 개념 및 예제

Range base for반복문을 작성하기 위해 배열, vector, map 등 같은 범위가 지정된 변수들을 이용합니다. 배열을 반복하기 위해 보통 for 문을 많이 작성합니다. 만약 배열이 10개라서 10번의 반복문을 작성하였다고 가정하겠습니다. 그런데 배열의 선언 변경되면서 원소의 개수가 변경되면 어떻게 될까요? 원소의 개수가 변경된 만큼 배열의 반복문의 숫자도 모두 변경해야하는 불편함이 있습니다. 컴파일 할때마다 수정해야하고 아주 귀찮은 일입니다. C++11에서는 배열, vector, map 등 범위가 있는 변수들을 하나씩 알아서 방문하는 range base for 문을 사용할 수 있습니다. #include #include using namespace std; int main(){ int numAr..

SW/C++ 2018.11.16

[ C++ ] Lambda 개념 및 예제

C++을 사용하다 보면 함수 자체를 다른 함수의 파라미터로 넘기는 경우가 있습니다. 다음의 예를 살펴보도록 하겠습니다. template void sort(RandsomIt first, RandomIt last, Compare comp);cs template을 이용하여 정렬할 값의 시작과 끝을 알려줍니다. 비교할 함수를 받아 comp() 함수를 이용해 값을 비교합니다. 이 때 비교 함수는 우리가 정렬하는 값이 문자열인지, 숫자인지, 객체인지에 따라 임의로 전달해 주어야 합니다. 즉 함수를 파라미터로 넘겨주어야 하는 것입니다. 이런 상황이 다른 곳에서 많이 발생합니다. 따라서 비교하는 함수를 만들어 정렬할 때마다 전달해야 합니다. 하지만 이러한 함수는 굉장히 짧고 다른 곳에서 쓰이지 않을 일회용 함수일 가능..

SW/C++ 2018.11.15

[ c++ ] auto 개념 및 예제

auto변수를 선언하기 위해 변수 이름 앞에 어떤 데이터 형으로 선언할지 변수의 데이터 형을 입력해야 했습니다. 하지만 객체 지향을 이용하는 개발자들은 데이터형을 하나하나 입력하는 것도 귀찮은게 사실입니다. 결국 개발자들은 컴파일러가 데이터에 따라 알아서 데이터 형을 정해주기를 바랍니다. 최근 이슈가 되고 있는 파이썬에는 어떠한 변수에도 데이터형을 입력하지 않습니다. 프로그램을 실행하면 자동으로 데이터 형을 정하는 것입니다. C++11에서는 auto라는 기능이 추가되었습니다. auto를 활용하면 데이터 형을 컴파일러가 알아서 지정합니다. 대신 auto로 선언되는 변수는 선언과 동시에 초기화되어야하는 것이 조건입니다. 컴파일러가 초기화되는 시점에 데이터형을 결정합니다. 따라서 어떤 데이터형으로 선언할지 알..

SW/C++ 2018.11.15

C++11은 무엇일까요?

객체 지향 언에는 많은 언어가 있습니다. C++ 뿐만 아니라 스몰토크, Ada, 파이썬, 루비까지 다양한 언어가 있습니다. 이러한 다양한 언어가 존재하는 이유는 시대가 흐르면서 컴퓨터의 성능이 발전하고 고성능 장치가 생겨나면서 다양한 요구가 생기기 때문입니다. 그러므로 객체지향에서 원하는 요구사항이 변경되면서 C++도 다양한 요구 사항을 받아들이고 있습니다. 새로운 기능들을 추가하기 위해 지속적으로 발전하는 것입니다. 앞으로 알아두면 좋은 C++ 기능을 포스팅하겠습니다. 객체지향의 요구사항이 변경되고 새롭게 추가되면서 C++도 새로운 좋은 기능들이 채택되었습니다. 혹시 C++0x라고 들어보셨나요? C++ 기능들이 추가되어가면서 2000년대의 한 시점에 표준이 공개될 것이라고 예상해 C++0x라 칭하였습니..

SW/C++ 2018.11.15
반응형