프로그래밍/C/C++(28)
-
[C/C++] 삼항 연산자
정말 오랜만에 삼항 연산자에 대해 적어본다.사실 if ~ else를 선호하는 나에게 삼항 연산자는 뭔가 goto처럼 아예 안 쓰던 녀석이었는데실제로는 코드 뭐 꽤 사용하기도 한다고... 여튼 오랜만에 리마인드를 해보자. 삼항 연산자 영어로는 a ternary operator라고 표기한다고 한다. (condition) ? (true value) : (false value)로 사용되며 condition에 따라 연산의 값이 나오게 되는 것이다.간단하긴 하지만 가끔 떠올리려면 항상 기억이 안나서........... https://github.com/ElementalKiss/Cpp/blob/master/Example/TernaryOperator.cpp 써야하나? 삼항 연산자는 일단 코드를 간결하게 만들 수 있다...
2015.11.27 -
[C++11] 주요 기능들
auto컴파일 타임에 타입이 지정된다. iterator에 사용하면 좋다고 한다. 1234567891011void autoKeyword(){ int varInt = 0; double varDouble = 0.0f; auto i1 = varInt; auto i2 = varDouble; std::cout
2015.09.07 -
[C++/STL] STL 벡터와 배열 차이
벡터(STL) 정의 동적 배열 구조로 C++에서 구현한 것. C++ STL 중의 하나의 템플릿 클래스. C의 배열처럼 빠른 랜덤 접근이 가능하지만 자동으로 배열의 크기 조절과 객체의 추가 삭제가 가능하다. 요소에 접근, 앞뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알아낼 수 있다. 배열과 차이점 C++의 배열은 메모리에 연속적. 배열의 모든 요소는 같은 타입을 가진다. 벡터는 at()함수를 사용해 존재하지 않는 요소에 접근하면 에러를 발생. 템플릿 클래스기때문에 원하는 모든 타입의 일반적인 배열(generic array)을 만들 수 있다. 벡터는 데이터를 선형적으로 유지한다. 저장공간보다 많은 데이터를 추가하면 현재 보유하고 있는 메모리의 두 배만큼 이를 할당하기 때문에 단순한 할당으로 선형적인 공간..
2015.08.19 -
[C++] 스마트포인터(Smart Pointer)
RAII RAII는 C++에서 자주 쓰이는 idiom으로 자원의 안전한 사용을 위해 객체가 쓰이는 스코프를 벗어나면 자원을 해제해주는 기법이다. C++에서 heap에 할당된 자원은 명시적으로 해제하지 않으면 해제되지 않지만, stack에 할당된 자원은 자신의 scope가 끝나면 메모리가 해제되며 destructor가 불린다는 원리를 이용한 것이다. 스마트 포인터 정의 자원관리 기법에 사용되며 메모리 자원 관리와 경계 검사 등 기존 포인터 변수에서 기능이 추가 된 추상 데이터 타입. 스마트 포인터의 특징 자원을 획득한후, 자원 관리 객체에게 넘긴다 자원관리 객체는 자신의 소멸자를 사용하여 자원이 확실하게 해제 되도록 한다 버그 보완(안전), 자동청소, 자동 초기화를 해준다 스마트 포인터는 C++에서 안전하..
2015.07.14 -
[STL] vector의 at()과 []의 차이
서론같은 역할을 하는데 왜 이렇게 STL에선 두 가지를 지원하는 것일까! 내부를 보자!그러하다.. 내부를 뜯어보니 답이 나왔다. at은 size()를 체크함으로써 속도가 느리긴하지만 안정성이 높고 디버깅에 용이하다.하지만 오퍼레이터[]는 속도는 빠르나 치명적인 에러를 발생시킬 수 있다.
2015.07.11 -
2차원 벡터 사용하기
서론2차원 동적 배열을 위해 동적할당하다가 뻑이 미친듯이 나시는 분들에게꿈과 희망을 드리고자.. 그리고 내가 안까먹기 위해 이 글을 작성하였다. 선언1std::vector m_sampleArray;cs 벡터 안에 벡터가! 공명의 함정이니 당황하지 말자! 초기화123456for (int i = 0; i
2015.07.08