C++
- [C++ STL] std::set 개요 2015.11.17
- [C++ STL] std::map 개요 2015.11.16
- [C++ STL] std::list 개요 2015.11.11
- [C++ STL] std::vector 개요 2015.11.10 3
- 부스트 라이브러리 예제 - The Boost C++ Libraries BoostBook Documentation Subset 2014.09.24
- [C++11] 원 안에만 점 찍기 2014.09.02
- C++14 관련 소식 2014.08.20
- C++ 책들 2014.07.21 2
- [OpenCV] Reference 및 OpenCV Documentation 2014.07.07
- [boost] 부스트 라이브러리 빌드 (설치) 2014.06.20 10
[C++ STL] std::set 개요
[C++ STL] std::map 개요
[C++ STL] std::list 개요
템플릿 기반이므로 임의 타입을 요소로 가질 수 있으며, 요소 개수에 따라 동적으로 메모리를 관리한다.
double linked list로 되어 있기에 double linked list의 특징을 거의 그대로 가지고 있으며 linked list 자료구조에 대한 이해가 있어야 알맞는 상황에 알맞게 사용할 수 있다. 필자는 std::list를 거의 사용하지 않는다. 나뻐서 안 사용한다기 보다는 std::vector로도 충분한 상황이 대부분이기 때문이다.
- 고정 길이인 배열에 비해 길이가 가변적이다.
- std::vector와 달리 데이터의 중간 삽입, 중간 삭제 속도가 빠르다.
- 데이터 중간 삽입, 삭제시 요소 개수에 상관없이 동일한 상수시간이 소요된다.(상수 시간 복잡도의 수행 성능 보장)
- list의 순회 속도는 O(n), 즉 요소 개수가 많을 수록 순회 속도는 느리다.
- 각 노드는 앞쪽, 뒤쪽 노드와 연결된 이중 연결 리스트다.(반대는 std::forward_list로써, 단일 연결 리스트다)
- 노드 기반이므로 []나 at()을 지원하지 않는다.
※ std::list를 사용해야 하는 경우
- 저장된 요소를 자주 검색하지 않을때
- 중간에 데이터 삽입, 삭제가 자주 발생할때
- 랜덤 엑세스를 자주 안할때
'STL - Containers > list' 카테고리의 다른 글
[C++ STL] std::list 주요 멤버 함수 목록 (0) | 2015.11.25 |
---|
[C++ STL] std::vector 개요
std::vector는 동일 타입의 자료 집합으로써 흔히 배열에 비유를 많이 한다.
또한 템플릿 기반이므로 임의 타입을 요소로 가질 수 있으며, 요소 개수에 따라 동적으로 메모리를 관리한다.
다른 컨테이너들에 비해 구조가 단순하고 사용 방법이 쉬우며 속도도 빠른편이다, 또 실용적이라 활용 빈도가 높다.
- 배열을 대체할 수 있다.
- 동일 타입의 자료 집합이며 각 요소는 연속된 위치에 배치된다.
- 연속된 위치에 배치되므로 임의 위치를 빠른 속도로 액세스 할 수 있다.
- 최상위 레벨의 임의 접근 반복자를 제공하므로 STL의 거의 모든 알고리즘 사용 가능하다.
- 삽입, 삭제 속도가 느리다. 중간 삽입, 삭제는 더 느리다.
- 배열의 크기는 고정이지만 std::vector는 요소 개수에 따라 자동(동적)으로 늘어난다.
- 배열과 std::vector 모두 사용 방법이 쉽다.
- 배열과 std::vector 모두 데이터를 연속된 위치에 순차적으로 저장한다.
- 연속된 위치에 순차적으로 저장하므로 랜덤 엑세스가 가능하다.
- 속도는 보통 배열이 std::vector보다 빠르다.
- 저장할 데이터의 개수가 가변적일때
- 중간에 데이터 삽입, 삭제가 적거나 없을때
- 저장된 요소를 자주 검색하지 않을때
- 랜덤 엑세스를 자주 할때
'STL - Containers > vector' 카테고리의 다른 글
[C++ STL] std::vector - emplace_back (3) | 2016.04.15 |
---|---|
[C++ STL] std::vector - push_back (0) | 2016.02.19 |
[C++ STL] std::vector 주요 멤버 함수 목록 (0) | 2015.11.23 |
부스트 라이브러리 예제 - The Boost C++ Libraries BoostBook Documentation Subset
부스트 라이브러리 예제가 필요할 때, 찾기 쉽게 하려고 그대로 퍼옵니다.
출처 : http://www.boost.org/doc/
Table of Contents
- What's Included in This Document
- I. The Boost C++ Libraries (BoostBook Subset)
- 1. Boost.Accumulators
- 2. Boost.Align
- 3. Boost.Any
- 4. Boost.Array
- 5. Boost.Atomic
- 6. Boost.Chrono 2.0.4
- 7. Boost.Circular Buffer
- 8. Boost.Concept_Check
- 9. Boost.Container
- 10. Boost.Date_Time
- 11. Boost.Foreach
- 12. Boost.Function
- 13. Boost.Functional/Hash
- 14. Boost.Heap
- 15. Boost.Interprocess
- 16. Boost.Intrusive
- 17. Boost.Lambda
- 18. Boost.Lexical_Cast 1.0
- 19. Boost.Lockfree
- 20. Boost.Move
- 21. Boost.MPI
- 22. Boost.Program_options
- 23. Boost.PropertyTree
- 24. Boost.Proto
- 25. Boost.Random
- 26. Boost.Ratio 2.1.0
- 27. Boost.Ref
- 28. Boost.Signals
- 29. Boost.Signals2
- 30. Boost.StaticAssert
- 31. Boost String Algorithms Library
- 32. Thread 4.3.0
- 33. Boost.TR1
- 34. Boost.Tribool
- 35. Boost.TypeErasure
- 36. Boost.TypeIndex 4.0
- 37. Boost.Typeof
- 38. Boost.Units 1.1.0
- 39. Boost.Unordered
- 40. Boost.Variant
- 41. Boost.Xpressive
- II. Boost Tools
-------------------------------------------------------------------------------------------------------------------------
Documentation
Much work goes into the documentation for the Boost libraries and tools. The documentation included in the library and tool release is also available here:
Additional information about the testing and release practices, infrastructure and in progress developments is available on our Trac wiki.
Translations
Boost doesn't have the resources to translate the documentation itself, but there is at least one separate group translating the documentation. If you have formed another, tell us on the documentation list and we'll add a link.
'프로그래밍 관련 > 관련 문서' 카테고리의 다른 글
[OpenCV] Reference 및 OpenCV Documentation (0) | 2014.07.07 |
---|
[C++11] 원 안에만 점 찍기
친구가 임의의 위치와 임의의 크기의 원 안에만 점을 찍고 싶다고 해서 만든 함수 입니다.
함수의 첫 번째 인자는 원의 중심 위치고 두 번째는 반지름, 세 번째는 점의 크기입니다.
랜덤 함수로는 C++11의 random헤더에 있는 random_device와 mt19937_64를 사용 했습니다.
원 안에만 점을 찍는 이유는 포탄이나 탄알이 조준 한 곳에 안 맞고 오차가 있기 때문입니다.
서든어택이나 AVA 등의 FPS 게임 해보신 분들은 잘 아실듯요.
※함수
void CFigure::DrawRandomPoint2D( const POINT ptPos, const float nRadius, const float ptSize /*= 2.0f*/ ) const { POINT ptPoint; //랜덤 함수 std::random_device rn; //시드 값 std::mt19937_64 rnd( rn() ); //random_device를 시드 값으로 하여 초기화 //랜덤의 범위를 0~360 범위 내에서 지정 std::uniform_real_distribution<float> nDist( 0.0f, 360.0f ); float fTempDegree = nDist( rnd ); //반지름의 범위를 0에서 입력받은 값 범위 내에서 지정 std::uniform_real_distribution<float> fDist( 0.0f, nRadius ); float fTempRadius = fDist( rnd ); //랜덤으로 뽑은 각과 반지름으로 점 찍을 위치 계산 ptPoint.x = _SCAST( long, cos( fTempDegree * DEG2RAD ) * fTempRadius ); ptPoint.y = _SCAST( long, sin( fTempDegree * DEG2RAD ) * fTempRadius ); //입력 받은 점 기준으로 ptPoint.x += ptPos.x; ptPoint.y += ptPos.y; this->DrawPoint2D( ptPoint, ptSize ); }
동영상 입니다.
하얀색 원은 편의상 그린 원 입니다
'예제 모음 > C/C++' 카테고리의 다른 글
[C언어] 두 점 사이의 거리 구하기 (0) | 2015.12.02 |
---|---|
[C++11] 중복없는 로또 프로그램2 (2) | 2015.11.29 |
[C++11] 중복없는 로또 프로그램 (6) | 2015.11.27 |
[C언어] rand 함수를 이용한 로또 프로그램 (1) | 2014.04.08 |
[C언어] 재귀 함수 - 10진수 -> 2진수 변환 (1) | 2014.03.20 |
[C언어] 소수점 특정 자릿수 반올림하기 - ROUND 함수 (0) | 2014.03.14 |
[C언어] 어떤 수 x가 2의 n승인지 판별하는 함수 (0) | 2014.03.13 |
C++14 관련 소식
C++ 차세대 표준인 C++14( ISO/IEC 14882:2014 )가 14년 08월 18일자로 확정되었다고 하네요.
C++11 이후 3년만에 나온 터라 많은 양이 업데이트되지는 않았고, 주로 버그 수정 및 작은 개선 위주로 업데이트 되었습니다.
C++도 다른 언어에 뒤쳐지지 않게 새로운게 자꾸 나와서 좋기는 한데, 아직 C++11은 커녕 그냥 C++도 잘 못하는 저로써는 공부할게 늘었네요.. ㅋㅋ
- 위키피디아
- GCC C++1y/C++14 지원 정보
- Visual Studio C++11/C++14 지원 정보
'프로그래밍 관련 > 관련 소식' 카테고리의 다른 글
[개발] 마이크로소프트웨어 재발행 결정 (1) | 2017.02.02 |
---|---|
gcc 6.1 릴리즈 (0) | 2016.05.26 |
윈도우 10에서 리눅스 명령어 툴 Bash Shell 지원 (0) | 2016.05.12 |
C++ 책들
올초에 산 C++ 관련 책들인데, 아직 한 권도 제대로 못 봤네요.. =_=
올해 다 읽을 수 있으려나 모르겠네요ㅋㅋ
'사진 > 일상' 카테고리의 다른 글
[700D] 하늘 (0) | 2014.09.21 |
---|---|
[700D] 2014년 9월 8일 한가위 슈퍼문 (2) | 2014.09.17 |
R7 끌고 운길산역 -> 춘천역 라이딩 (0) | 2014.08.04 |
클래시 오브 클랜 (4) | 2014.07.21 |
[700D] 이사 (4) | 2014.02.04 |
[700D] 설악산 신흥사 청동좌불상 (2) | 2014.02.01 |
[700D] 오리 (2) | 2014.01.31 |
[OpenCV] Reference 및 OpenCV Documentation
-OpenCV란
OpenCV는 Open Source Computer Vision의 약자로써, 실시간 이미지 프로세싱에 중점을 둔 라이브러리다.
원래 인텔이 개발하였었고 지금은 BSD 라이센스로 배포된다.
처음에 인텔에서 만들어서 인지 인텔 CPU에서 사용할 경우 IPP(Intel Performance Primitive)로 인해 속도의 향상을 볼 수 있다.
지원하는 플랫폼은 Windows와 Linux, Mac OS, iOS, Android를 지원한다.
-OpenCV 관련 사이트 목록
-OpenCV Reference 파일 목록
'프로그래밍 관련 > 관련 문서' 카테고리의 다른 글
부스트 라이브러리 예제 - The Boost C++ Libraries BoostBook Documentation Subset (0) | 2014.09.24 |
---|
[boost] 부스트 라이브러리 빌드 (설치)
boost란 C++ 커뮤니티 및 C++ 개발자들이 개발하고 있는 오픈 소스 라이브러리의 집합으로써, C++를 위한 멀티스레딩, 정규표현식, 의사 난수 발생, 선형대수 등을 지원하는 유용한 라이브러리 집합이다. 또한 C++ 표준에 영향을 미치기도 하며, 최신 표준인 C++11에 boost 라이브러리가 몇 가지 표준으로 채택되기도 하였다. boost는 UNIX 및 Windows 등을 포함하여 거의 모든 최신 운영체제에서 작동하며 상업 및 비상업적으로 모두 사용이 가능하다.
boost 다운로드는 http://www.boost.org/ 서 하며, 14. 06. 20일 기준 최신 버전은 1.55.0 버전이다. 1.48 버전도 같은 방법으로 빌드가 가능한 걸로 보아, 앞으로 최신버전이 나와도 비슷한 방법으로 빌드할 수 있을 거 같다.
boost를 다운 받았으면 적당한 곳에 압축을 푼다. 필자의 경우 "D:\boost_1_55_0"에 압축을 풀었다.
압축 푼 폴더를 보면 "bootstrap.bat"이라는 배치파일이 있는 데 이걸 실행시킨다.
bootstrap.bat을 실행시키면 커맨드 창에 아래와 같은 문구가 떴다가 몇 초뒤 사라진다.
커맨드 창이 사라지면 아래와 같이 "b2.exe", "bjam.exe"파일이 생성된다.
빌드는 커맨드 창에서 해야하므로 커맨드 창을 실행 시킨 뒤 boost 라이브러리 폴더가 있는 곳으로 이동한다. 필자는 위에서 "D\boost_1_55_0"에 압축을 풀었으므로 아래와 같이 이동했다.
폴더로 이동했으면 아래와 같이 명령어를 입력한다.
b2 toolset=msvc-12.0 variant=debug,release link=static threading=multi address-model=32 runtime-link=shared
볼드체로 된 항목은 환경에 따라 달라지므로 유의해서 입력해야한다.
가령 msvc는 비주얼 스튜디오의 버전으로써 12.0은 2013버전을 뜻한다. 참고로 2017은 14.1, 2015는 140.0, 2010은 10.0, 2008은 9.0, 2005는 8.0이라고 입력하면 된다. 또 중요한게 address-model인데, 이 옵션은 컴파일 환경이 x86냐 x64냐에 따라 달라진다. 이는 윈도우 비트와는 상관없이 x86로 컴파일 하냐, x64로 컴파일하냐에 따라 달라진다. 대부분의 사람들은 x86 환경에서 컴파일 하므로 잘 모르겠으면 32로 하면 된다. 나머지는 옵션 중 "debug,release"는 "debug"나 "release"로, "shared"는 "static"으로 바꿀 수 있다.
이전 단계의 명령어를 실행하면 5~30분 정도 시간이 흐른후 아래와 같은 창이 뜬다. 2개의 경로가 나오는데,위의 경로는 헤더 파일들이 있고, 아래 경로에는 *.lib파일들이 있다. 헤더는 처음부터 있었고 라이브러리만 생성된 것이다.
필자는 비주얼 2010과 2013을 사용하므로 각각에 맞는 버전으로 컴파일 해두었다.
'라이브러리 > build' 카테고리의 다른 글
[라이브러리] 파이썬 모듈 중 하나인 requests 설치하기 (2) | 2017.02.07 |
---|---|
[라이브러리] 파이썬 pip로 selenium 설치하기 (2) | 2017.01.24 |
[라이브러리] 파이썬으로 MySQL 연동을 위한 pymysql 설치 (3) | 2017.01.18 |
[라이브러리] 파이썬 pip로 BeautifulSoup 설치하기 (5) | 2017.01.09 |
[OpenSSL] 윈도우 환경에 라이브러리 설치 (0) | 2016.01.18 |
[MariaDB] ODBC 설치 및 연결 문자열 (2) | 2016.01.17 |
[curl] 윈도우 환경에서 라이브러리 빌드 및 설치 (6) | 2016.01.10 |