본문 바로가기

프로그래밍/C/C++

[VS] tab, space 보기 Ctrl + R, Ctrl + W
[Boost] 설치 https://www.boost.org/에서 최신버전을 다운 받는다. bootstrap.bat을 실행하면 b2.exe와 bjam.exe가 두 exe가 나온다. 빌드하기b2 바이너리로 컴파일 하고 라이브러리를 뽑아내면 된다. 1b2 toolset=msvc-14.0 variant=debug,release link=static threading=multi address-model=32 runtime-link=sharedcs 대충 이런 꼬라지로 만들면 된다. 옵션은 프로젝트의 성격에 맞게 정하면 된다. 자세한 옵션http://www.viper.pe.kr/cgi-bin/moin.cgi/Boost lib가 뽑아져나온다. 프로젝트 속성에 VC++ 디렉토리 설정에서 폴더를 정해준다.include 디렉토리에 boost_..
[C++] for each 써보기 코드 짠 거 보다가 파트장님이 for each라는 것을 쓰길래 찾아봤다.algorithm의 std::for_each는 자주 봤지만 .. C++에도 for each가 있었나? 하며 찾아봤다. 2015기준 MSDN을 보니 권장하지는 않는다고 적혀있다.아마 범위계열은 for ( type value : values )가 있기 때문에 이것을 미는듯! MSDNhttps://msdn.microsoft.com/en-us/library/ms177202.aspx 123for each (type identifier in expression) { statements}Colored by Color Scriptercs 대충 이런 형태다. 예제https://github.com/ElementalKiss/Cpp/blob/master/..
[C++, Json] jsoncpp 사용하기 json 라이브러리 파일 만들어내기라이브러리 다운 : http://sourceforge.net/projects/jsoncpp/ makefiles에서 sln 솔루션 열기.jsoncpp 솔루션 Project Properties > C/C++ > Code Generation > Runtime Library에 /MDd로 설정. 컴파일 후json_vc71_libmtd.lib 파일 가져오기. 테스트 프로젝트에 라이브러리 링크하기 여러 방법이 있겠지만 라이브러리를 쓰기 위해선 2가지를 해야한다.그것은 헤더 파일 링크, 라이브러리 링크프로젝트 세팅에서 건드려도 되지만 나는 명시적으로 하는게 좋아서.. 프로젝트 내에 json폴더를 만들고 include 파일과 lib 파일을 모두 가져왔다. 12#include "json/..
[C/C++] 삼항 연산자 정말 오랜만에 삼항 연산자에 대해 적어본다.사실 if ~ else를 선호하는 나에게 삼항 연산자는 뭔가 goto처럼 아예 안 쓰던 녀석이었는데실제로는 코드 뭐 꽤 사용하기도 한다고... 여튼 오랜만에 리마인드를 해보자. 삼항 연산자 영어로는 a ternary operator라고 표기한다고 한다. (condition) ? (true value) : (false value)로 사용되며 condition에 따라 연산의 값이 나오게 되는 것이다.간단하긴 하지만 가끔 떠올리려면 항상 기억이 안나서........... https://github.com/ElementalKiss/Cpp/blob/master/Example/TernaryOperator.cpp 써야하나? 삼항 연산자는 일단 코드를 간결하게 만들 수 있다...
[C++11] 주요 기능들 auto컴파일 타임에 타입이 지정된다. iterator에 사용하면 좋다고 한다. 1234567891011void autoKeyword(){ int varInt = 0; double varDouble = 0.0f; auto i1 = varInt; auto i2 = varDouble; std::cout
[C++/STL] STL 벡터와 배열 차이 벡터(STL) 정의동적 배열 구조로 C++에서 구현한 것. C++ STL 중의 하나의 템플릿 클래스. C의 배열처럼 빠른 랜덤 접근이 가능하지만 자동으로 배열의 크기 조절과 객체의 추가 삭제가 가능하다.요소에 접근, 앞뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알아낼 수 있다. 배열과 차이점C++의 배열은 메모리에 연속적. 배열의 모든 요소는 같은 타입을 가진다. 벡터는 at()함수를 사용해 존재하지 않는 요소에 접근하면 에러를 발생.템플릿 클래스기때문에 원하는 모든 타입의 일반적인 배열(generic array)을 만들 수 있다.벡터는 데이터를 선형적으로 유지한다. 저장공간보다 많은 데이터를 추가하면 현재 보유하고 있는 메모리의 두 배만큼이를 할당하기 때문에 단순한 할당으로 선형적인 공간을 못 만들..
[C++] 스마트포인터(Smart Pointer) RAIIRAII는 C++에서 자주 쓰이는 idiom으로 자원의 안전한 사용을 위해 객체가 쓰이는 스코프를 벗어나면 자원을 해제해주는 기법이다. C++에서 heap에 할당된 자원은 명시적으로 해제하지 않으면 해제되지 않지만, stack에 할당된 자원은 자신의 scope가 끝나면 메모리가 해제되며 destructor가 불린다는 원리를 이용한 것이다. 스마트 포인터 정의자원관리 기법에 사용되며 메모리 자원 관리와 경계 검사 등 기존 포인터 변수에서 기능이 추가 된 추상 데이터 타입. 스마트 포인터의 특징자원을 획득한후, 자원 관리 객체에게 넘긴다자원관리 객체는 자신의 소멸자를 사용하여 자원이 확실하게 해제 되도록 한다버그 보완(안전), 자동청소, 자동 초기화를 해준다스마트 포인터는 C++에서 안전하고 효율적인..