- 책_곽용재님 홈페이지
- 책_노란북 - 책 가격비교
- 책_김재우-SICP번역
- 플밍_쏘쓰포지
- 플밍_CodingHorror ?
- 플밍_상킴
- 플밍_김민장님
- GPGStudy
- 플밍_미친감자님
- 플밍_jz
- 플밍_샤방샤방님
- 플밍_글쓰는프로그래머2
- 플밍_키보드후킹
- 사람_재혁
- 사람_kernel0
- 사람_박PD
- 사람_경석형
- 사람_nemo
- 사람_kikiwaka
- 사람_Junios
- 사람_harry
- 사람_어떤 개발자의 금서목록..
- 사람_모기소리
- 사람_낙타한마리
- 사람_redkuma
- 사람_영원의끝
- 사람_민식형
- 도스박스 다음카페
- 플레이웨어즈 - 게임하드웨어벤치마크
- http://puwazaza.com/
- David harvey의 Reading Marx's c…
- 씨네21
- 한겨레_임경선의 이기적인 상담실
- 본격2차대전만화 - 굽시니스트
- 영화_정성일 글모음 페이지
- 영화_영화속이데올로기파악하기
- 음식_생선회
- 죽력고
- 사람_한밀
- 플밍_수까락
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 인문학
- Programming
- 정신분석
- 프로그래밍
- 정성일
- 고등학교 사회공부
- 영화
- 유머
- 단상
- 노무현
- 진중권
- modernc++
- 김두식
- 유시민
- 강유원
- programming challenges
- 고전강의
- 일리아스
- 삼국지
- 삼국지6
- 진삼국무쌍5
- 소비자고발
- BSP
- c++
- 태그가 아깝다
- template
- 건강
- stl
- 게임
- 책
- Today
- Total
목록stl (6)
lancelot.com
Pointer to member data #include struct Point { int x; int y; }; int main() { int num = 0; int* p1 = # int Point::* p2 = &Point::y;// 멤버 함수포인터처럼 객체에.* 연산자를 사용해서 접근하기 위함 *p1 = 10;// ok //*p2 = 10;// error Point pt; pt.*p2 = 10;// pt.y=10 // *( (char*)&pt+p2 )=10; std::cout
멤버함수의 호출원리(this call) class Point { public: int x{ 0 }; int y{0}; public : void set(int a, int b) { x = a; y = b; } }; int main() { Point pt1; Point pt2; pt1.set(10, 20); pt2.set(10, 20); } 주의 실제 함수 인자가 전달되는 방식과 객체 주소가 전달되는 방식은 약간의 차이가 있다. 표준으로 정해진 사항은 아니므로 32bit/ 64bit 환경, 컴파일러에 따라서도 차이가 있을 수 있음. static member 함수는 객체의 주소가 전달되지 않는다. this call 이 아님. 객체의 주소를 알 수 없기때문에 x, y에 접근할 수 없음. member functi..
container 안의 item을 증가시키고 싶을때 ++ 등을 사용하는 것보다 advance를 사용하면, container가 달라도 같은 구현을 유지할 수 있어서 좋다. std::advance(it, N) 반복자 it를 N만큼 이동하는 알고리즘 반복자의 종류(category) 에 따라 +또는 ++ 연산자 사용 advance 구현방법 tag_dispatching : C++98 enable_if : C++11 if constexpr : C++17 concept & requires clauses : C++20 #include #include #include #include int main() { //std::vector c = { 1,2,3,4,5,6,7,8,9,10 }; std::list c = { 1,2,..
allocator 메모리 할당관련 함수를 추상화한 도구 메모리 할당 방식을 쉽게 변경할 수 있게 해준다. std::allocator C++ 표준 메모리 할당기 기본 구현은 operator new() / operator delete() 사용 allocator 멤버함수 - 사용자 정의 allocator를 만들기위해서는 아래 멤버함수 구현 필요 allocate : 메모리 할당 construct : 생성자 호출 destroy : 소멸자 호출 deallocate 메모리 해제 사용자정의 allocator를 STL에 전달하려면 default constructor template constructor value_type member == 연산, != 연산 이 가능해야한다 #include #include"point.h"..
// default 생성자가 없다 class Point { int x=0; int y=0; public : //Point() = default; Point(int x, int y) : x(x), y(y) {} }; Generic Container IDioms Generic (template 기반) container를 설계할때, 저장되는 "타입이 가져야하는 요구조건을 최소화" 하도록 한다 STL container 에 저장되는 타입의 최소요구조건 : 복사생성이 가능해야한다 아래 예시에서 new T[sz] : T 타입은 반드시 default constructor 를 가져야함 메모리 할당과 호출을 분리하면 더욱 유연한 container가 된다 operator new() 로 메모리할당 placement new 를..
std::string strSome = "AaBbCcDdEeFfGg"; // 대문자로.. std::transform(strSome.begin(), strSome.end(), strSome.begin(), toupper); // 소문자로.. std::transform(strSome.begin(), strSome.end(), strSome.begin(), tolower); 이렇게 하면되는군요. 못찾았으면 만들뻔; 참고글 http://www.gpgstudy.com/forum/viewtopic.php?t=2218 A=0x41, A=0x61, 따라서 0x20 차이. 0x20은 여섯번째 비트. 따라서 여섯번째 비트가 0이면 대문자, 1이면 소문자. 혹시 STL안쓰고 만들일이 있으면 이렇게 한번 해봅시다.